Python错误io,不支持的操作:不可读

9jyewag0  于 2022-12-28  发布在  Python
关注(0)|答案(3)|浏览(164)

我有这个错误,我不知道为什么我得到了它。我按照我的Python手册的步骤,我得到了这个。我试图清理第8列和第9列的文件,如果他们有奇怪的字符。如果有人可以帮助我,请告知。
错误出现在代码行中:第一个月
请在下面找到我的代码:

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()

***LATER EDIT我如上所述更改了代码,但未执行任何操作,未将-0-替换为0

ss2ws0br

ss2ws0br1#

编辑:
你需要用r+打开文件。使用w是只写,r+是读写访问。

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

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

row[7] = newinteger
4ioopgfo

4ioopgfo2#

在我之前的人也说过,但我认为这个错误是来自字符串"-0-"周围的括号,也许还有第一次使用时的空格。

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

应为:如果行[7] ==“-0-":

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

应为:如果行[8] ==“-0-":

sshcrbum

sshcrbum3#

这就是我的解决方案:创建一个输出文件并写入它,我从源文件中读取。有点奇怪,因为在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)

相关问题