【问题标题】:Python Error io.UnsupportedOperation: not readablePython 错误 io.UnsupportedOperation:不可读
【发布时间】:2018-02-17 16:41:30
【问题描述】:

我有这个错误,我不知道为什么我得到它。 我按照我的 Python 手册中的步骤操作,我得到了这个。如果它们具有奇怪的字符,我正在尝试清理第 8 列和第 9 列上的文件。 如果有人可以帮助我,请指教。

错误出现在代码行:for row in csv.reader(f):

请在下面找到我的代码:

    import csv


file = '/Users/cohen/Desktop/sdn-2.csv'
newstring = "null"
newinteger = int(0)
with open(file, 'r+') as f:
    for row in csv.reader(f):
       if row[7] =="-0-":
           row[7] = newinteger
       if row[8] == "-0-":
           row[8] = newinteger
f.close()

***稍后编辑我如上所述更改了代码,但没有做任何事情是没有用0替换-0-

【问题讨论】:

  • open(file, 'w') 你打开文件是为了写,而不是读。
  • 即使您修复了open 错误,您仍然有一个整体逻辑问题——分配给一行并将该更改写回文件。跨度>
  • 最好读取数据,根据需要清理csv行,将清理后的行写入新文件,然后删除原始文件并将新文件重命名为原始名称。跨度>

标签: python ios csv


【解决方案1】:

这是我的解决方案:创建一个输出文件并将我从源文件中读取的内容写入其中。有点奇怪,因为在 VBA 中更容易做到这一点,然后在 python 中,但这是 pythn 的 csv 模块中的解决方案。我不喜欢我必须创建另一个文件,而且我基本上不能在读取的文件中写入,我必须写入一个全新的文件,但这就是生活......如果有人有更好的方法,我我对新事物开放。

希望其他人使用此代码。

import csv
newstring = "null"
newinteger = (0)
with open('/Users/cohen/Desktop/sdn-4 2.csv', 'r') as file1, open('/Users/cohen/Desktop/new_sdn.csv', 'w', newline='') as file2:
    reader = csv.reader(file1, delimiter=',')
    writer = csv.writer(file2, delimiter=',')

    for row in reader:
        replaced1 = row[7].replace('-0-', newstring)
        row[7]=replaced1
        replaced2 = row[8].replace('-0-', newinteger)
        row[8]=replaced2
        writer.writerow(row)

【讨论】:

    【解决方案2】:

    我之前的那些人也说过其他的东西,但我认为这个错误来自字符串"-0-" 周围的括号。也许还有第一次使用的空间。

    if row[7] ==("-0-"):
    

    应该是: 如果行[7] == "-0-":

    if row[8] == ("-0-"):
    

    应该是: 如果行[8] == "-0-":

    【讨论】:

      【解决方案3】:

      编辑:

      你需要用 r+ 打开文件。使用 w 仅用于写入,使用 r+ 用于写入和读取访问。

      with open(file, 'r+') as f:
      

      row[7] == newinteger 中使用 == 是调用相等运算符。它检查左右操作数的值是否相同。您想使用 = 设置新值。

      row[7] = newinteger
      

      【讨论】:

        猜你喜欢
        • 2012-11-02
        • 2013-09-28
        • 2017-12-07
        • 2015-06-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多