2016-11-30 15 views
-1

したがって、最初にいくつかの生の入力があるスクリプトがあります。通常、スクリプトは実行され、新しいファイルを同じディレクトリに作成します。私はそれが新しいディレクトリを作成し、そのディレクトリにファイルを構築するために入力の1つを使用するようにしようとしています。Python - ユーザー入力で作成されたディレクトリにファイルを書き込む

import os 
import sys 
import socket 
import struct 

ri_name_input = raw_input("Enter the Name: ") 

path = ri_name_input 
if not os.path.exists(path): 
    os.makedirs(path) 

スクリプト自体がいくつかのテンプレートファイルから読み込まれ、それらのテンプレートファイルから探しているものを新しいファイルに作成します。

with open('derp_s1_template.txt') as infile, open(path, 'derp_s1_config.txt', 'w') as outfile: 
    for line in infile: 
     for src, target in repl_derp_s1.iteritems(): 
      line = line.replace(src, target) 
     outfile.write(line) 

トラブルは、私がこれを実行すると、それが正しく(私は許可が少しグラグラしているに気づいた、が、私はその上で動作する必要があります)ディレクトリを作成し、それは私に次のエラーを与え、次のとおりです。

Traceback (most recent call last): 
    File "new_derper-2.py", line 260, in <module> 
    with open('derp_s1_template.txt') as infile, open(path, 'derp_s1_config.txt', 'w') as outfile: 
TypeError: an integer is required 

私はどこを見ているべきですか?

+2

'open(path、 'derp_s1_config.txt'、 'w')'が間違っています。 'open(os.path.join(path、 'derp_s1_config.txt')、 'w')'を実行します。オプションのバッファリング引数はファイルの望ましいバッファサイズを指定します.0はバッファなし、1はバッファされた行、その他の正の値はバッファを使用することを意味します。 (およそ)そのサイズ(バイト単位)」 –

+0

それはそれだった!ありがとう、トン! – DangerZone

答えて

1

open()機能には別のパスとファイル名は使用されません。ファイルへのパスのみが使用されます。パスとファイル名を1つの文字列に結合する必要があります。

import os 

with open(os.path.join(path, 'derp_s1_config.txt'), 'w'): 
    # ... 

open()で3番目のオプションの引数は、バッファサイズを指定すると、整数を期待するために使用されているので、あなたが取得しているエラーです。もともとは3つの引数を指定していたので、バッファサイズには'w'を使用しようとしていました。これは型の不一致です。

関連する問題