2017-07-25 8 views
0
import sys 

filepath = "D:\\Desktop\\SIGN IN OUT\\" 
times = ["min.txt","hour.txt","datein.txt","dateout.txt"] 

while True: 
    z = input("Enter Your First and Last Name. Just don't put a . in your name. : ") 
    y = z+'\\'+z 
    for x in range(len(times)): 
     f = open(filepath+y+times[x],'w') 
     f.write('0') 
     f.close() 
+3

具体的なエラーが発生していますか?正確にはファイル作成を「うまくいかない」ものにしていますか? – HunterM267

答えて

3

\\でファイルに結合することは、それを実行する最良の方法ではありません。推奨される方法は、osモジュールからos.path.joinを使用している:

import os 

while True: 
    z = input("Enter Your First and Last Name. Just don't put a . in your name. : ") 
    y = os.path.join(*z.split()) 
    for x in times: 
     with open(os.path.join(filepath, y, x), 'w') as f: 
      f.write('0') 

は私もお勧めします -

  1. あなたのファイルを処理するために、コンテキストマネージャを使用して、それはあなたのコードクリーナーになります。

  2. 反復処理times上に直接ではなく、インデックス

    また


、ジャン=フランソワ・ファーブルは彼の答えに述べて、あなたがより良い存在しない任意のディレクトリを作成する os.mkdirを使用したいですファイルを作成する前に Here's良いリファレンス。

+1

範囲の代わりに 'for x in times:'の選択について言及する価値はありますか? –

+0

'import os'をコードの先頭に追加できますか? – Ben

+2

両方、行った。ありがとうございました。 –

2

問題はそのコードであることである:

z = input("Enter Your First and Last Name. Just don't put a . in your name. : ") 
y = z+'\\'+z 
  • y(あなたが期待しているディレクトリを与えていないが、それがメインではないでしょう\\によって接合された2回同じ値であり、問題)
  • あなたのファイルを開こうとしているときには、恐らくが存在しないディレクトリの中でこれを実行しています。

ですから、(os.path.joinを使用して@COLDSPEEDが述べたようにきれいである)を追加する必要があります:

my_dir = os.path.join(filepath, y) 
if not os.path.isdir(my_dir): 
    os.makedirs(my_dir) # creates dirs if doesn't exist, with full path 

それらを含めることになったディレクトリが存在するように、あなたのファイルを開く前に(ディレクトリdoesnの場合openが失敗しました存在しません)

関連する問題