0

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

我的程序部分如下所示:

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

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

4

3 回答 3

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)

请注意我在打开文件时使用with语句。这是一种很好的做法,因为它更具可读性并确保文件正确关闭,即使出现异常也是如此。

我在这里也使用python三元运算符来根据条件进行简单的变量赋值(如果它已经以 结尾,则设置询问自身".csv",否则将其连接起来)。

此外,这是假设您的输出已经适合 CSV 文件,仅扩展名不会使其成为 CSV。通常在处理 CSV 数据时,您可能需要查看csv 模块

于 2012-05-01T00:08:43.973 回答
2

您需要使用ask+'.csv'将所需的扩展名连接到用户输入的末尾。

但是,仅使用扩展名命名文件.csv不足以使其成为逗号分隔的文件。您需要格式化输出。用来csvwriter做那个。python 文档有一些关于如何执行此操作的简单示例。

我建议您不要尝试自己生成格式化的逗号分隔输出。这是一项非常艰巨的任务,而且在内置功能的情况下完全没有意义。

于 2012-05-01T00:08:51.783 回答
0

您的变量askstringraw_input. 因此,如果您想将扩展名 .csv 附加到它,您应该这样做:

fileout = open(ask + ".csv", "w")

那应该行得通。

于 2012-05-01T00:09:49.850 回答