因此,我们有一个脚本,在开头有一些原始输入。通常,脚本将在同一目录中运行并创建新文件。我试图让它使用其中一个输入来创建一个新目录并在该目录中构建文件。
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
有关我应该在哪里寻找的建议吗?
答案 0 :(得分:1)
open()
函数不采用单独的路径和文件名,只需要一个文件路径。您需要将路径和文件名组合成一个字符串。
import os
with open(os.path.join(path, 'derp_s1_config.txt'), 'w'):
# ...
您获得的错误是因为open()
中的第3个可选参数用于指定缓冲区大小并且需要一个整数。由于您最初指定了三个参数,因此尝试使用'w'
作为缓冲区大小,这是一种类型不匹配。