2017-11-10 1 views
2

Python이 백그라운드에서 실행되는 동안 프로그램에 파일을 저장하려고합니다. 결과 파일을 찾고 시도 할 때까지 "os"에 while 루프를 만들었습니다. 그 전에 (블록을 ​​제외한 try), 나는 짧은 백업 파일 코드를 만들었다. (이것이 내 문제에 대해 중요한지는 확실하지 않다.)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는 사실까지 나는 기다리고 있어요,하지만 운영 체제는 결코 새 경로를 인식하지 않기 때문에 항상 거짓입니다. 누구든지 내 코드에 문제가있을 수 있습니까?

매우 고급에 감사드립니다 :)

+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

한 가지 질문! 왜 os.sep를 C : 다음에 사용 했습니까? "\\"를 대표하지 않습니까? 모든 폴더 이후에있을 필요는 없습니까? –

+0

이 질문에 대한 내 대답을 기반으로 두 번째 대답 : https://stackoverflow.com/questions/2422798/python-os-path-join-on-windows 다른 plase my_path 변수에 합류하기 때문에 my_path가 초기화 된 한 곳에서 사용됩니다 – domandinho

관련 문제