2017-11-10 7 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が真であるために、私は待っているんだけど、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

ちょうど1つの質問!なぜos.sepをC:の後ろに使用したのですが、スクリプトのどこにも他の場所はありませんでしたか?それは "\\"の代表ではありませんか?すべてのフォルダの後にある必要はありませんか? –

+0

私の答えは、この質問の2番目の答えに基づいています:https://stackoverflow.com/questions/2422798/python-os-path-join-on-windows他のplaseがmy_path変数に参加しているので、my_pathが初期化されている場所で使用されます – domandinho

関連する問題