簡體   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