问题描述
我试图使用shutil.move
将文件从文件夹移动到本地计算机上的另一个文件。但是我一直收到这个错误:
我认为之所以会这样,是因为目的地不存在,因为它正是我要移动的目的地。那么如何在将文件移动到那里之前使它存在?
注意:这是我的代码:
import os
import shutil
path = '.\PDF_data\PDF'
record = pd.read_csv('~/Desktop/sec_results1.csv')
for file in tqdm(record['ID Number']):
pdf = path + '/' + file + '.pdf'
if os.path.exists(pdf):
shutil.move(pdf,'~/Desktop/PDF_extracted' + '/' + file + '.pdf')
解决方法
如果'~/Desktop/PDF_extracted'
不是已经存在的目录,则必须先创建目录,然后再将文件移动到该目录。您可以使用os.mkdir或pathlib.Path.mkdir。
以下是您可以通过任一方法完成此操作的方法:
os.mkdir
fpath = '~/Desktop/PDF_extracted'
if not os.path.exists(fpath):
os.mkdir(fpath)
pathlib.Path.mkdir
from pathlib import Path
fpath = '~/Desktop/PDF_extracted'
path_obj = Path(fpath)
if not path_obj.exists():
path_obj.mkdir()
旁注:
使用文件路径可能很棘手,因此我绝对建议您研究一下os
尤其是pathlib
的文件路径操作方法,它们使工作变得更加轻松,并且在执行任务时会大大减少混乱这样。
其他资源:
- Python | os.mkdir() method
- Why you should be using pathlib
- Introduction to the Python Pathlib Module
import os
import shutil
path = '.'
print(os.path.abspath(path))
os.mkdir("new_folder")
old_folder = "test"
shutil.move("~/Desktop/test/file.txt","new_folder")
- 您位于由“。”指示的当前目录中。句号,如果您想知道自己的绝对路径目录。
- 您通过“ os.mkdir”代码制作“ new_folder”
- 假定当前目录“〜/ Desktop”中有“ test”文件夹,其中包含要移动的“ file.txt”文件。
- 'shutil.move'将帮助您将'file.txt'文件从'〜/ Desktop / test /'文件夹移至'〜/ Desktop / new_folder'文件夹。
我是在Windows 10上完成的,因此无法识别~\Desktop
。我需要将其更改为Microsoft类型,例如./../Desktop
。