2016-06-20 11 views
1

ファイルをあるサーバーから別のサーバーに移動する関数があります。この関数は、実行時にファイル名を返します。ファイルが転送されなかった場合はFalseを返します。関数が実行され、その関数がFalseを返すまでループ上の値を返します。 - Python

私はこの関数をFalseを返すまでループで呼びたいと思います。関数が呼び出されるたびに、返された値(ファイル名)にアクセスする必要もあります。私はどちらか一方をすることができますが、私は両方をすることに問題があります。ここで私は擬似コードで実現しようとしているものです:ファイルを移動

機能(これは変更されません):

def move_first_matching_file(): 
    try: 
     # find the first file that matches a wildcard file name 
     # move the file from remote server to local server 
     # delete file from remote server 
     return name_of_file 
    except: 
     return False 

(これは作業が必要)他のモジュールで上記の関数を呼び出す:

while move_first_matching_file() as name_of_file is not False: 
    # process name_of_file 

上記のwhileループを実行するだけでなく、返されたファイル名にもアクセスする必要があります。これはどうすればいいですか?上のコードははっきりと機能しませんが、私が達成したいことを概説しています。

+1

発見された場合に行く場合:プロセスfile'は私が不明確何」」として、この質問を閉じるために投票しています – Whitefret

+0

を動作するはずです私が答えなければならない部分がわからないので "どのようにリターンステートメントを設計する? tryブロックのコメント部分にはどのようなコードが必要ですか?両方の場合、これは広すぎます。 –

+0

@ Two-BitAlchemistは、 "falseが到達するまでファイルを処理する関数をコードする"ようには要求していませんか? – Whitefret

答えて

2

割り当ては常にステートメントなので、Pythonのようなことはできません。いつものパターンは次のとおりです。

while True: 
    name_of_file = move_first_matching_file() 
    if not name_of_file: 
     break 
    ... 
+0

関数が 'truthy'を返す場合、' while true:... break'は必要ありません - ファイル名を返します(そして私が知っているところでは、ファイル名は長さゼロにできません) False'となる。 @ Whitefretの質問に対するコメントを参照してください。 – dwanderson

+1

@dwanderson実際に彼は正しいです、opはそれを処理するファイルの名前を保持したいので。別の解決策は、ループ内の値を割り当てることです – Whitefret

+0

ああ、まあ、私は愚かです。申し訳ありません、私より先に進んでください! – dwanderson

0

としては、(常に真の略)成功した​​場合、あなたの関数は、文字列を送信するので、あなたも

filename = move_first_matching_file() 
while filename: 
    # process file 
    # call the function again and reassing the filename 
    filename = move_first_matching_file() 

を行うことができますコメントで言って、失敗した場合はfalse。
ブレークしばらくだから、ループ関数が失敗しますが、move_first_matching_file()しながら、ファイル名が `

関連する問題