我也尝试在Python中创建一个通过文本文件读取的脚本。在文本文件的每一行上都有一个文件名。我希望脚本循环遍历文本文件的每一行,并将文件名从其当前循环的文件名移动到其特定目的地。
希望这段代码可以更准确地了解我尝试做的事情:
import shutil
dst = "C:\\Users\\Aydan\\Desktop\\1855"
with open('1855.txt') as my_file:
for line in my_file:
src = "C:\\Users\\Aydan\\Desktop\\data01\\BL\\ER\\D11\\fmp000005578\\" + line
shutil.move(src, dst)
我正在考虑将具有特定文件名的文件内容放入一个数组中,但我最终有62700个可能的文件名,所以我想它是否只是将文件移动到每个文件中认为它会更有效率吗?
我还想过使用迭代器(或者你称之为的任何东西)设置i = [文本文件中的行数],然后让它以那种方式滚动,但看起来好像使用了for line in my_file:
我认为仅仅使用line
会有意义。
对于测试,文本文件包含:
BL_ER_D11_fmp000005578_0001_1.txt
BL_ER_D11_fmp000005578_0002_1.txt
BL_ER_D11_fmp000005578_0003_1.txt
我对此代码的问题在于它没有按预期工作,我没有收到任何错误,但文件从一个文件夹移动到另一个文件夹不是没有发生。如果你们有可能指出这个问题的解决方案,我希望如此。
谢谢!
Aydan
答案 0 :(得分:0)
我会尝试:
import os
dst = "C:\\Users\\Aydan\\Desktop\\1855\\" # make sure this is a path name and not a filename
with open('1855.txt') as my_file:
for filename in my_file:
src = os.path.join("C:\\Users\\Aydan\\Desktop\\data01\\BL\\ER\\D11\\fmp000005578\\", filename.strip() ) # .strip() to avoid un-wanted white spaces
os.rename(src, os.path.join(dst, filename.strip()))
答案 1 :(得分:0)
使用
的 .strip()
强>
提供目的地路径正在解决这个问题
import shutil
dst = r"C:/Users/Aydan/Desktop/1855/"
with open('test.txt') as my_file:
for filename in my_file:
file_name = filename.strip()
src = r'C:/Users/Aydan/Desktop/data01/BL/ER/D11/fmp000005578/'+ file_name
shutil.move(src, dst + file_name)