【问题标题】:FileNotFoundError - the error says it cannot find the file it obviously did findFileNotFoundError - 错误说它找不到明显找到的文件
【发布时间】:2016-01-01 19:09:14
【问题描述】:

我正在尝试制作一个简单的程序来将具有用户指定扩展名的所有文件复制到另一个文件夹中。代码如下,错误如下:

#! python3
# Copies all files from folder with user specified extension
import os, shutil

pmatch = []
num = 1
while True:
    print('Enter path ' + str(num) + ' or "end" to finish')
    pt = input()
    if pt.lower() == 'end':
        break
    pmatch.append(pt)
num = num + 1
pth = str()
for i in pmatch:
    pth = pth + str(i) + '/'

truepth = 'C:/' + pth
os.chdir(truepth)

print('Enter folder name to copy:')
folder_name = input()
print('Enter new folder name: ')
new_folder = input()
print('Enter extension to copy:')
ext = input()

orig_pth = truepth + folder_name 
new_pth = truepth + new_folder 

for folder_name, subfolders, filenames in os.walk(orig_pth):
    for filename in filenames:
        if filename.endswith(ext):
            shutil.copy(filename, new_pth)
            print(filename + ' copied')
print('Complete')

这是错误:

FileNotFoundError: [Errno 2] 没有这样的文件或目录:'alice.txt'

Alice.txt 是它应该复制的文件夹中的 .txt 文件之一,所以它清楚地找到了吗?怎么回事?

【问题讨论】:

    标签: python filenotfoundexception


    【解决方案1】:

    它没有找到它,因为如果你不指定一个文件夹,Python 将只查看放置脚本的文件夹中的文件,修复应该只是:

    shutil.copy(os.path.join(folder_name, filename))
    

    【讨论】:

    • 答案是正确的,但要改进它:你不应该使用 + 来连接文件路径部分,因为你会遇到缺少反斜杠或双反斜杠的问题......最好使用 os .path.join(文件夹名,文件名)
    • @EugenePrimako 已修复
    • 谢谢,这成功了。我认为通过更改 cwd 我不必指定这一点。那么 shutil.copy() 中的第一个参数是否总是需要绝对路径?
    • @DouglasMunsey 在 python 中所有函数都需要完整路径名
    • 好吧,我想我看错了,在 os.chdir(truepth) 中,truepth 没有文件夹名称。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-01
    • 2019-07-29
    • 1970-01-01
    • 2016-05-28
    • 1970-01-01
    相关资源
    最近更新 更多