2016-07-06 13 views
1

私はpythonスクリプトを取得して、名前のリストを持つテキストファイルを読み込み、それらの名前に基づいてフォルダを作成しようとしています。たとえば、テキストファイルに "john_doe"と "jane_doe"がある場合、スクリプトは2つのフォルダを作成する必要があります。 1つは "john_doe"と呼ばれ、もう1つは "jane_doe"と呼ばれます。Pythonでテキストファイルの名前に基づいてフォルダを作成する

スクリプトを実行すると、WindowsErrorエラーが表示されます。[エラー123]ファイル名、ディレクトリ名、またはカラム名の構文が正しくありません: "、ファイル 'names.txt'を開き、モード 'r' at 0X00000000025E6300> 「ここ

は、私が実行しているスクリプトです:

import os 

with open('names.txt') as x: 
    for line in x: 
     line = line.strip() 
     os.mkdir(str(x)) 

私はそれは、Windowsの問題(したがってWindowsError)のより多くのだと思いますが、私はそれを回避するかどうかはわかりません。任意のヒント?代わりの

+0

オープン( '名前の変更、これを。 txt ')をx:open(' names.txt '、' r ')と同じようにx: – AK1

+0

としてください。私は最初にそれをしていたはずです。残念ながら、私はまだ同じエラーが発生します。 – DarkKnight4251

+0

xはファイル記述子であり、行ではないため、os.mkdir(x)ではなくos.mkdir(行)です。 –

答えて

2

 os.mkdir(str(x)) 

あなたが意味:lineはすでにstrあるので、あなたも、str()を必要としない

 os.mkdir(str(line)) 

。 (os.mkdir(x)がエラーを出すため、os.mkdir(x)が追加されたと思われます)。

以前のコードでは、すべて「<open file 'names.txt', mode 'r' at 0X00000000025E6300>」のような名前のディレクトリを作成しようとしていました。あなたはあなたのプログラムがディレクトリに変更を加えるには、適切な権限を持っているmaynotことがあり

>>> import os 
>>> os.getcwd() 

+0

それはうまくいった。時にはそれは私が推測する目の別のセットを取る:)。あなたが正しいです、os.mkdir(x)が私にエラーを与えていたのでstrを追加しました。 – DarkKnight4251

0

をして、現在の作業ディレクトリを確認してください。

>>> os.chdir("<someAbsolutePath>") 

そして、あなたがプログラムは、あなたがプログラムのパーミッションを変更する必要があり、別のディレクトリに変更を加えること/書くことができます見つけた場合:

のような何か他のものに変更してみてください。

+0

良い考え!私はすでにこれを使ってコードを二重にチェックしました。それは問題ではありませんでしたので、余分なコードを取り除くためにjusを取り出しました。 – DarkKnight4251

0

名前の間に特殊文字と空白を含む問題が発生している可能性があります。複数の単語のディレクトリ名の間で空白文字をエスケープしないと、Windowsはそれを気に入らない。

試行し(I)Unicodeとしてラインを読んで(特殊文字の問題を回避するため)および(ii)空白の問題を回避するために、アンダースコアで名前を結ぶ:

import os 

with open('names.txt', 'rU') as x: 
    for line in x: 
     line = line.strip().split() 
     filename = "_".join([i for i in line]) 
     os.mkdir(filename) 
+0

この場合、私はそれをする必要はありませんでしたが、将来のプロジェクトではこれを念頭に置いています。ありがとう! – DarkKnight4251

関連する問題