我明顯在做一些非常錯誤的事情。我想找到文件,這是在一個目錄,但不是在第二個目錄(例如xxx.phn在一個目錄和xxx.wav在第二個目錄...Python:檢測現有文件:os.file.exists
似乎我無法檢測,當文件不存在第二個目錄(它總是像顯示所有文件)...我沒有得到任何文件顯示,儘管它們的存在......
import shutil, random, os, sys
if len(sys.argv) < 4:
print """usage: python del_orphans_dir1_dir2.py source_folder source_ext dest_folder dest_ext
"""
sys.exit(-1)
folder = sys.argv[1]
ext = sys.argv[2]
dest_folder = sys.argv[3]
dest_ext = sys.argv[4]
i = 0
for d, ds, fs in os.walk(folder):
for fname in fs:
basename = os.path.splitext(fname)[0]
if (not os.path.exists(dest_folder+'/'+basename + '.' + dest_ext)):
print str(i)+': No duplicate for: '+fname
i=i+1
print str(i)+' files found'
FWIW沒有必要做'str(i)'調用。只要做'打印我',找到文件''。而'i + = 1'而不是'i = i + 1'的作品。 – Joel
如果'os.path.exists'不能正常工作,爲什麼你需要多於一行或兩行來演示相同?擁有額外的代碼只是創建其他地方(與'os.path.exists'無關),該錯誤可能會隱藏。 –
同樣,爲您的打印語句重新計算全名並再次爲實際的exists()調用表示它們之間可能存在細微的差異。理想情況下,像這樣的問題會在打印輸出中顯示「ls -l」,表明該文件存在,並在腳本中顯示一條錯誤消息,表明它不會,並且會爲打印呼叫使用僅分配一次的變量和'exists()'調用,以避免出現此類錯誤。 –