Python突然无法找到文件,只有当我想重命名或复制它们时

Python突然无法找到文件,只有当我想重命名或复制它们时,python,Python,我试图非常简单地将一堆文件从一个目录复制到另一个目录,然后重命名这些文件(将空格和%20替换为)。在我的根目录中,我有: optimizer.py(我用来运行脚本的内容) 文件夹(名为“要改进的文件”,包含基本文本文件) 文件夹(名为“完成”,我希望每个文件都复制到其中(空)) 似乎可以找到这些文件,因为这段代码成功地打印了每个文件(及其各自的新文件名): 第一个问题发生在我将copyfile(f,finished\u files\u dir)添加到底部时,返回此错误: f: FILE.tx

我试图非常简单地将一堆文件从一个目录复制到另一个目录,然后重命名这些文件(将空格和%20替换为)。在我的根目录中,我有:

  • optimizer.py(我用来运行脚本的内容)
  • 文件夹(名为“要改进的文件”,包含基本文本文件)
  • 文件夹(名为“完成”,我希望每个文件都复制到其中(空))
似乎可以找到这些文件,因为这段代码成功地打印了每个文件(及其各自的新文件名):

第一个问题发生在我将
copyfile(f,finished\u files\u dir)
添加到底部时,返回此错误:

f: FILE.txt --- n: file.txt
Traceback (most recent call last):
  File "optimiser.py", line 10, in <module>
    copyfile(f, finished_files_dir)
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/shutil.py", line 259, in copyfile
    with open(src, 'rb') as fsrc, open(dst, 'wb') as fdst:
FileNotFoundError: [Errno 2] No such file or directory: 'FILE.txt'
它返回以下错误:

f: FILE.txt --- n: file.txt
Traceback (most recent call last):
  File "optimiser.py", line 12, in <module>
    os.rename(f, new_filename)
FileNotFoundError: [Errno 2] No such file or directory: 'FILE.txt' -> 'file.txt'
换衣服

copyfile(f, finished_files_dir) #error 1


还有一个提示:重命名文件时,可能会出现重复项(例如,
bla-bla
bla%20bla
都将重命名为
bla_-bla
),因此您可能需要检查目标是否已经存在…

copyfile
功能不知道在哪里查找您的文件,尝试传递绝对路径运行此命令将返回真正的打印(os.path.isdir(files\u to\u improve\u dir)),因此我假设它知道这是一个目录?非常有用,谢谢
f: FILE.txt --- n: file.txt
Traceback (most recent call last):
  File "optimiser.py", line 12, in <module>
    os.rename(f, new_filename)
FileNotFoundError: [Errno 2] No such file or directory: 'FILE.txt' -> 'file.txt'
import os
from shutil import copyfile

files_to_improve_dir = 'Files to Improve'
finished_files_dir = 'Finished'

for f in os.listdir(files_to_improve_dir):
    new_filename = f.replace(' ','_').replace('%20','_').lower()
    print('f:', f, '--- n:', new_filename)
    copyfile(f, finished_files_dir) #error 1
    if (f != new_filename): #error 2
        os.rename(f, new_filename) #error 2
copyfile(f, finished_files_dir) #error 1
copyfile(os.path.join(files_to_improve_dir, f),
         os.path.join(finished_files_dir, f))
os.rename(f, new_filename) #error 2
os.rename(os.path.join(files_to_improve_dir, f),
          os.path.join(files_to_improve_dir, new_filename))