我有一个文本文件,我想在Python中擦除。我怎么做呢?
当前回答
在程序中将文件指针赋值为空只会消除对文件的引用。文件还在那里。我认为c stdio.h中的remove()函数就是你要找的。对Python不太确定。
其他回答
这不是一个完整的答案,更多的是对ondra答案的延伸
当使用truncate()(我的首选方法)时,确保您的光标位于所需的位置。 当打开一个新文件进行读取时- open('FILE_NAME','r'),它的光标默认为0。 但如果你在代码中解析了文件,请确保再次指向文件的开头,即truncate(0) 默认情况下,truncate()从当前cusror位置开始截断文件的内容。
一个简单的例子
由于文本文件是顺序的,所以不能直接擦除其中的数据。你的选择是:
The most common way is to create a new file. Read from the original file and write everything on the new file, except the part you want to erase. When all the file has been written, delete the old file and rename the new file so it has the original name. You can also truncate and rewrite the entire file from the point you want to change onwards. Seek to point you want to change, and read the rest of file to memory. Seek back to the same point, truncate the file, and write back the contents without the part you want to erase. Another simple option is to overwrite the data with another data of same length. For that, seek to the exact position and write the new data. The limitation is that it must have exact same length.
看看seek/truncate函数/方法来实现上面的任何想法。Python和C都有这些函数。
当使用open("myfile.txt", "r+")作为my_file:时,我在myfile.txt中得到奇怪的0,特别是因为我先读取文件。为了让它工作,我必须首先用my_file.seek(0)将my_file的指针更改为文件的开头。然后我可以执行my_file.truncate()来清除文件。
这是我的方法:
使用r+模式打开文件 使用file. Read()从文件中读取当前数据 使用file.seek(0)将指针移到第一行 使用file.truncate(0)从文件中删除旧数据 先写新内容,再写之前用file.read()保存的内容
所以完整的代码是这样的:
with open(file_name, 'r+') as file:
old_data = file.read()
file.seek(0)
file.truncate(0)
file.write('my new content\n')
file.write(old_data)
因为我们使用的是打开,文件会自动关闭。
除非需要删除文件的结尾,否则不能就地“擦除”文件。要么满足于覆盖一个“空”值,要么读取文件中您关心的部分并将其写入另一个文件。
推荐文章
- 证书验证失败:无法获得本地颁发者证书
- 当使用pip3安装包时,“Python中的ssl模块不可用”
- 无法切换Python与pyenv
- Python if not == vs if !=
- 如何从scikit-learn决策树中提取决策规则?
- 为什么在Mac OS X v10.9 (Mavericks)的终端中apt-get功能不起作用?
- 将旋转的xtick标签与各自的xtick对齐
- 为什么元组可以包含可变项?
- 如何合并字典的字典?
- 如何创建类属性?
- 不区分大小写的“in”
- 在Python中获取迭代器中的元素个数
- 解析日期字符串并更改格式
- 使用try和。Python中的if
- 如何在Python中获得所有直接子目录