【问题标题】:Python inserting variable string as file namePython将变量字符串作为文件名插入
【发布时间】:2013-01-15 08:23:29
【问题描述】:

每次我的脚本运行时,我都会尝试创建一个具有唯一文件名的文件。我只打算每周或每月这样做。所以我选择使用日期作为文件名。

f = open('%s.csv', 'wb') %name

是我得到这个错误的地方。

Traceback (most recent call last):
File "C:\Users\User\workspace\new3\stjohnsinvoices\BabblevoiceInvoiceswpath.py", line 143,      in <module>
f = open('%s.csv', 'ab') %name
TypeError: unsupported operand type(s) for %: 'file' and 'str'

如果我使用静态文件名,它可以工作,打开函数是否有问题,这意味着你不能传递这样的字符串?

name 是一个字符串,具有以下值:

31/1/2013BVI

非常感谢您的帮助。

【问题讨论】:

  • 答案集群;)

标签: python file python-2.7


【解决方案1】:

你需要把% name直接放在字符串后面:

f = open('%s.csv' % name, 'wb')

你的代码不起作用的原因是你试图%一个文件,它不是字符串格式,也是无效的。

【讨论】:

  • 谢谢,愚蠢的错误......我也忽略了'/'是一个无效的字符或文件名。
【解决方案2】:

你可以做类似的事情

filename = "%s.csv" % name
f = open(filename , 'wb')

f = open('%s.csv' % name, 'wb')

【讨论】:

    【解决方案3】:

    并且使用新的字符串格式化方法...

    f = open('{0}.csv'.format(name), 'wb')
    

    【讨论】:

      【解决方案4】:

      与peixe非常相似。
      如果您作为参数添加的变量是按出现顺序排列的,则不必提及数字

      f = open('{}.csv'.format(name), 'wb')
      

      另一个选项 - f 字符串格式 (ref):

      f = open(f"{name}.csv", 'wb') 
      

      【讨论】:

        【解决方案5】:

        python 3 中的 f 字符串更好!

        f = open(f'{name}.csv', 'wb')
        

        【讨论】:

          【解决方案6】:

          f = open('{}.csv'.format(), 'wb')

          【讨论】:

          • 请正确格式化代码,click here to learn how.
          • 虽然此代码可能会解决问题,但 including an explanation 关于如何以及为何解决问题将真正有助于提高您的帖子质量,并可能导致更多的赞成票。请记住,您正在为将来的读者回答问题,而不仅仅是现在提问的人。请edit您的答案添加解释并说明适用的限制和假设。
          猜你喜欢
          • 2019-02-08
          • 1970-01-01
          • 1970-01-01
          • 2017-03-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多