我要做的是向用户询问要制作的文件的名称,然后将一些内容保存在此文件中。
我的程序部分如下:
if saving == 1:
ask=raw_input("Type the name file: ")
fileout=open(ask.csv,"w")
fileout.write(output)
我希望格式为.csv,我尝试了不同的选项,但似乎无法正常工作。
答案 0 :(得分:5)
这里的问题是你需要传递open()
一个字符串。 ask
是一个包含字符串的变量,但我们还希望将另一个字符串".csv"
附加到它以使其成为文件名。在python +
中是字符串的连接运算符,因此ask+".csv"
表示 ask的内容,后跟.csv 。您目前所拥有的是查找csv
变量的ask
属性,这将导致错误。
with open(ask+".csv", "w") as file:
file.write(output)
如果用户已输入扩展程序,您可能还需要先检查:
ask = ask if ask.endswith(".csv") else ask+".csv"
with open(ask, "w") as file:
file.write(output)
请注意我在打开文件时使用the with
statement。这是一种很好的做法,因为它更具可读性,并确保文件正确关闭,即使在例外情况下也是如此。
我也在这里使用python ternary operator根据条件做一个简单的变量赋值(如果它已经在".csv"
中结束则设置询问自己,否则连接它。)
此外,假设您的输出已经适用于CSV文件,单独的扩展名不会使其成为CSV文件。在处理CSV数据时,您可能希望查看the csv module。
答案 1 :(得分:2)
您需要使用ask+'.csv'
将所需的扩展名连接到用户输入的末尾。
但是,仅使用.csv
扩展名命名文件不足以使其成为逗号分隔文件。您需要格式化输出。使用csvwriter
来执行此操作。 python文档有一些关于如何执行此操作的simple examples。
我建议您不要尝试自己生成格式化的逗号分隔输出。这是一项令人惊讶的艰巨任务,并且在内置功能的存在下毫无意义。
答案 2 :(得分:0)
您的变量ask
将在string
之后为raw_input
类型。
所以,如果你想将扩展名.csv附加到它,你应该这样做:
fileout = open(ask + ".csv", "w")
这应该有效。