2017-11-10 146 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