首页 > 解决方案 > 通过从文本文件中获取名称来复制文件。- Python

问题描述

我试图通过从文本文件“input.txt”中读取文件名来将几个文件从一个文件夹复制到另一个文件夹。我做错了什么?先感谢您。

import shutil
import os
f = open('input.txt','r')
src=r'C:\Users\abhishekcho\Desktop\Self\folder1'
dst=r'C:\Users\abhishekcho\Desktop\Self\folder2'

for i in range(4):
    file_name = f.readline()
    source = os.path.join(src,file_name)
    shutil.copy2(source,dst)

输出:

PS C:\Users\abhishekcho\Desktop\Self> &
C:/Users/abhishekcho/AppData/Local/Programs/Python/Python37-32/python.exe
c:/Users/abhishekcho/Desktop/Self/test.py Traceback (most recent call
last):   File "c:/Users/abhishekcho/Desktop/Self/test.py", line 10, in
<module>
    shutil.copy2(source,dst)   File "C:\Users\abhishekcho\AppData\Local\Programs\Python\Python37-32\lib\shutil.py",
line 263, in copy2
    copyfile(src, dst, follow_symlinks=follow_symlinks)   File "C:\Users\abhishekcho\AppData\Local\Programs\Python\Python37-32\lib\shutil.py",
line 120, in copyfile
    with open(src, 'rb') as fsrc: OSError: [Errno 22] Invalid argument:
'C:\\Users\\abhishekcho\\Desktop\\Self\\folder1\\text1.txt\n'

标签: python

解决方案


好像尾随换行符 \n 包含在您的路径中并导致错误。你可以删除它rstrip()

import shutil
import os
f = open('input.txt','r')
src=r'C:\Users\abhishekcho\Desktop\Self\folder1'
dst=r'C:\Users\abhishekcho\Desktop\Self\folder2'

for i in range(4):
    file_name = f.readline().rstrip()
    source = os.path.join(src,file_name)
    shutil.copy2(source,dst)

推荐阅读