Python 检查文件是否存在,如果存在则更新它,否则创建它

标签 python file

<分区>

我是 Python 新手 我想检查文件名 checkzero.txt 是否存在 如果不存在,我想在checkzero.txt中写入1,否则我会增加它。

if os.path.exists("checkzero.txt"):

    f = open('checkzero.txt', 'r')
    counter = pickle.load(f)
    f.close()

    counter = counter + 1

    f = open('checkzero.txt', 'w')
    pickle.dump(counter, f)
    f.close()

else:
    f = open('checkzero.txt', 'w')
    pickle.dump(1, f)
    f.close()

但是,如果我将 checkzero.txt 创建为一个空文件,它会出错:

Traceback (most recent call last):
  File "FileBasics.py", line 8, in <module>
    counter = pickle.load(f)
  File "/usr/local/Cellar/python/2.7.2/lib/python2.7/pickle.py", line 1378, in load
    return Unpickler(file).load()
  File "/usr/local/Cellar/python/2.7.2/lib/python2.7/pickle.py", line 858, in load
    dispatch[key](self)
  File "/usr/local/Cellar/python/2.7.2/lib/python2.7/pickle.py", line 880, in load_eof
    raise EOFError
EOFError

最佳答案

您需要以二进制模式打开pickle 文件:

f = open('checkzero.txt', 'rb')

f = open('checkzero.txt', 'wb')

但为什么要使用 pickle 呢?

你可以像这样得到相同的结果:

try:
    with open("checkzero.txt") as f:
        counter = int(f.read()) +1
except IOError:
    counter = 1
with open("checkzero.txt", "w") as f:
    f.write(str(counter))

关于Python 检查文件是否存在,如果存在则更新它,否则创建它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12392459/

相关文章:

python - 什么样的方法应该是模型类的方法?

c - 从 C 中的二进制文件中读取 block 字节

ruby - 检测字符串是文件还是目录的简单方法

python - 类型错误 : Object of type Mock is not JSON serializable

Python:大型项目并对到处使用的文件进行更改

python - 如何使用 Twisted Words Python 库创建一个简单的 Google Talk 客户端?

python - 不寻常的列表推导执行顺序

java - 在 Java 中将文件中的 char 值放入二维数组

c - 关于 C 中的文件 io 函数

linux - 文件系统 'overlays'