2016-08-10 6 views
1

をスキャンするファイルを選択するために、ユーザからの入力をしながら、Pythonのを使用して一つのファイルに複数のファイルを書き込むので、私はこのようなコードがあります、私はそれが少し壊れて見えます知っ[OK]を

input_name="PLACEHOLDER" 

while input_name != "": 
    input_name=input('Part Name: ') 


with open("/pathway/%s.txt" %input_name ,"r") as read_data, open("output.txt","w") as output: 

if part_name != "": 
    f=input_data.read() 
    print(input_data) 

    output.write(part_name) 
    output.write(date) 
    output.write(y) 
else: 
    read_data.close() 
    output.close() 

をしかし、私は複数の入力を受け取り、それらの入力(ファイル名)のそれぞれをプログラムの最後に同じファイルに書き込むことができる必要があるため、ループを修正する必要があります。私はおそらくここに少なくとももう1つのループが必要で、私はちょうど正しい方向にアイデアやキックを探しています。私はそこに他の書式設定用のコードを持っています。これは裸の骨で、実行可能なループの種類を探しています。私のためにこれを見る時間がかかる人のおかげで!

+0

@ user357269どこに無限ループがありますか? –

+0

無限ループはしませんが、問題は、ループのどこを移動するかについての提案が必要なことです。なぜなら、 "x"個のファイル名を入力した後、whileループは終了しますが、プログラムにはfile_nameはプログラムの残りの部分を取得します。 –

+0

@ChaseGarfield私はあなたが正しい道を歩み始めるようにしようとします。いくつかのpseduoコードを入力してください。 –

答えて

1

withで開く場合は、ファイルをクローズする必要がないことを覚えておいてくださいあなたは何の保証もありませんが、あなたはそれを始めるべきです。

for (file_name in input_name): 
    with open("/pathway/%s.txt" %file_name ,"r") as read_data, open("output.txt","w") as output: 
     # any thing file related here 
     print(input_data) 
     output.write(part_name) 
     output.write(date) 
     output.write(y) 
print("All done") 
:今

input_name = [] 
user_input = input('Part Name: ') 
while user_input != "": 
    input_name.append(user_input) 
    user_input = input('Part Name: ') 

我々だけで得たすべてのファイルを通じてのループを聞かせて:

まず第一には、私たちが後でそれらをループすることができ、リスト内のすべての部品名を格納することができます

こうすれば、すべてのユーザー入力を一度に取得し、一度にすべてのデータを処理できます。

+0

これは正しい方向への大きなプッシュです!プログラムは書き込み関数を上書きし続けますので、ファイル出力には1セットのデータしかありません。しかし、良いスタートをありがとう! –

1

実行開始時からoutput.txtを開いたままにして、ユーザーが名前を入力した後に各ファイルを開くことができます。

例(テストしていません):

with open("output.txt","w") as output: 

    while True: 
     input_name = input('Part Name: ').strip() 

     if input_name == '': 
      break 

     with open("/pathway/%s.txt" %input_name ,"r") as read_data: 

      if part_name != "": 
       output.write(read_data.read()) 

は、あなたがちょうどあなたがガイドを支援するためにいくつかのコードをモックアップしようとして

+2

'iterの名前のために(ラムダ:入力(プロンプト)。ストリップ()、'): '...しかし、それは本当にあまりにも進んでいるでしょう –

+1

@JoranBeasley私は同意する、Pythonは美しい言語ですが、すべての機能を学ぶのに時間がかかります – Marco

+1

最近のPythonの学習者として、私はこれをすべてあまりにも頻繁に発見しています。 –