繁体   English   中英

如果文件出现在Python的文本文件中,则将文件从一个目录移动到另一个目录(请参阅2)

[英]Move files from one directory to another if they appear in a text file in Python (take 2)

好的,我将再试一次,对于我之前的问题中的不便,我深表歉意。

我正在用Java编写程序,我想根据文件是否出现在列表中将某些文件从一个目录移动到另一个目录。 我可以手动执行,但是目录中有成千上万个文件,因此这将是一项艰巨的任务,我需要重复几次! 我试图用Java来做,但是因为我正在使用Java,所以看来我不能使用java.nio,并且不允许使用外部库。

所以我试图用python编写一些东西。

import os
import shutil

with open('files.txt', 'r') as f:
    myNames = [line.strip() for line in f]
    print myNames

dir_src = "trainfile"
dir_dst = "train" 
for file in os.listdir(dir_src):
    print file  # testing
    src_file = os.path.join(dir_src, file)
    dst_file = os.path.join(dir_dst, file)
    shutil.move(src_file, dst_file)

“ files.txt”的格式为:

a.txt
edfs.txt
fdgdsf.txt

等等。

因此,目前它正在将所有内容从train移到trainfile ,但是如果myNames列表中有, myNames需要移动文件。

有没有人有什么建议?

所以目前它正在将所有内容从train移到trainfile,但是ii仅在myName列表中包含时才需要移动文件

您可以将“如果它们在myName列表中”直接从英语翻译为Python:

if file in myNames:
    shutil.move(src_file, dst_file)

就是这样。

但是,您可能需要一名称,而不是list 这在概念上更具意义。 尽管与在周围复制文件的成本相比,在列表中查找内容的速度可能微不足道,但它也更有效。 无论如何,要做到这一点,您需要再更改一行:

myNames = {line.strip() for line in f}

然后您就完成了。

检查文件名是否存在于myNames列表中,然后将其放在shutil.move之前

if file in myNames:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM