首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python错误io.UnsupportedOperation:不可读

Python错误io.UnsupportedOperation:不可读
EN

Stack Overflow用户
提问于 2017-09-09 01:33:36
回答 3查看 6.7K关注 0票数 0

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

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

请在下面找到我的代码:

代码语言:javascript
复制
    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-

EN

回答 3

Stack Overflow用户

发布于 2017-09-09 01:36:16

编辑:

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

代码语言:javascript
复制
with open(file, 'r+') as f:

在row7 == newinteger中使用==会调用相等运算符。它检查左操作数和右操作数的值是否相同。您希望使用=设置新值。

代码语言:javascript
复制
row[7] = newinteger
票数 0
EN

Stack Overflow用户

发布于 2017-09-09 01:38:05

前面的人也说过,但我认为这个错误来自于字符串"-0-"周围的圆括号。也许第一次使用时的空间也是如此。

代码语言:javascript
复制
if row[7] ==("-0-"):

应该是: if row7 == "-0-":

代码语言:javascript
复制
if row[8] == ("-0-"):

应该是: if row8 == "-0-":

票数 0
EN

Stack Overflow用户

发布于 2017-09-10 05:11:23

这是我的解决方案:创建一个输出文件,并在其中写入我从源文件中读取的内容。有点奇怪,因为在VBA中比在python中更容易做到这一点,但这是来自pythn的csv模块中的解决方案。我不喜欢我必须创建另一个文件,我基本上不能在读取的文件中写入,我必须写入一个全新的文件,但这是life....If有人有更好的方法,我打开了新的。

希望其他人也能使用这段代码。

代码语言:javascript
复制
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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46121820

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档