要求某人保存文件

时间:2012-05-01 00:06:30

标签: python

我要做的是向用户询问要制作的文件的名称,然后将一些内容保存在此文件中。

我的程序部分如下:

    if saving == 1:
        ask=raw_input("Type the name file: ")
        fileout=open(ask.csv,"w")
        fileout.write(output)

我希望格式为.csv,我尝试了不同的选项,但似乎无法正常工作。

3 个答案:

答案 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")

这应该有效。

相关问题