2017-11-10 140 views
2

我試圖在Python在後臺運行時將文件保存在程序中。我爲「os」做了一個while循環來嘗試找到結果文件,並且一直檢查直到它存在。在此之前(嘗試,除了塊),我做了一個簡短的備份文件代碼(我不確定這是否對我的問題很重要)。Python os庫不識別文件

import os 
import time 

path = "D:\\DICOM\\Data\\" 

try: 
    os.rename(path + "Results.csv", path + "Archive\\Results-Backup1.csv") 
except FileNotFoundError: 
    print("") 
except FileExistsError: 
    os.remove(path + "Archive\\Results-Backup1.csv") 
    os.rename(path + "Results.csv", path + "Archive\\Results-Backup1.csv") 

path= path + "Results.csv" 

k = str(os.path.isdir(path)) 

print(k) 

while k== "False": 

    time.sleep(1) 

    k=str(os.path.isdir(path)) 

print("k is now TRUE") 

我等着對於k爲True,所以我可以用我的代碼繼續,但它總是假,因爲OS從來沒有識別出新路徑。任何人都可以找到我的代碼的任何問題?

謝謝你在先進很大:)

+1

這個腳本檢查是否存在文件,但是如果你想結束這個循環,你需要創建這個文件。 – domandinho

+0

您正在檢查Results.csv是否爲_directory _... –

回答

0

應避免創建文件路徑與分隔字符串和使用+運營商concatinating他們。

使用os.path.join並傳遞目錄列表。

import time 
import shutil 
import os 

my_path = os.path.join('C:', os.sep, 'DICOM', 'Data') 
from_path = os.path.join(my_path, "Results.csv") 
to_path = os.path.join(my_path, "Archive", "Results-Backup1.csv") 
try: 
    shutil.move(from_path, to_path) 
except FileNotFoundError: 
    print("") 

my_path = os.path.join(my_path, "Results.csv") 

k = os.path.isfile(my_path) 

print(k) 

while not k: 
    time.sleep(1) 
    k = os.path.isfile(my_path) 

print("k is now TRUE") 

請確保您的程序正確地創建了您的文件。

+0

非常感謝!這也使得邏輯更合理。我從來沒有想過,謝謝:) –

+0

只有一個問題!爲什麼在C:之後使用os.sep,但腳本中沒有其他位置?它不代表「\\」嗎?它不必在每個文件夾之後? –

+0

我的答案基於這個問題的第二個答案:https://stackoverflow.com/questions/2422798/python-os-path-join-on-windows它用於my_path初始化的地方,因爲其他plaps正在加入my_path變量 – domandinho