文件操作示例

January 30, 2026

文件操作示例

本文档介绍文件读写、定位及异常处理。示例来源:doc/pikapython.com/examples/builtins/

模块简介

支持 open()read/readline/readlineswrite/writelinesseekclose 等。内嵌示例:

f = open('data.txt', 'r')
s = f.read(10)
f.close()
f = open('out.txt', 'w')
f.write('Hello\n')
f.close()

示例代码

基本读写(file.py)

f = open('test/python/main.py', 'r')
s = f.read(10)
print(s)
f.close()
f = open('test/assets/test.jpg', 'rb')
b = f.read(-1)
print(b)
f.close()
f = open('test/out/write.txt', 'w')
f.write('Hello World!\n')
f.close()

说明:文本读前 10 字节、二进制整文件读取、文本写入。设备上请将路径改为实际存在的文件。

按行读取(file2.py)

f = open('test/python/main.py', 'r')

s = f.readline()
print(s)

lines = f.readlines()
print(lines)

f.close()

说明:readline() 读一行,readlines() 读剩余所有行到列表。

多行写入(file3.py)

f = open('test/out/file3.txt', 'w')
seq = [
    'This is the first line.\n',
    'This is the second line.\n',
    'This is the third line.\n'
]
f.writelines(seq)
f.close()

说明:writelines() 将字符串列表写入文件,不会自动加换行,需在字符串中包含 \n

文件未找到处理(file_nofound.py)

try:
    f = open("_no_file.txt", "r")
except:
    print("File not found")

说明:用 try/except 捕获打开失败,避免脚本因缺失文件而中断。

文件定位(seek.py)

f = open('test/assets/test.jpg', 'rb')
len = f.seek(0, 2)
print(len)
f.close()

说明:seek(0, 2) 将位置移到文件末尾并返回当前偏移(即文件长度)。模式 2 表示从末尾计算。

write 方法引用(write_fn.py)

f = open('test/out/_test.txt', 'w')
w = f.write
n = w('test')
f.close()
assert n == 4
print('PASS')

说明:将 f.write 赋给变量后调用,返回值是写入的字节数。

大文件写入与内存(write_issue.py)

from PikaStdLib import MemChecker as mem
a = open(".test.py", "wb")
m0 = mem().getNow()
for i in range(1000):
    n = a.write(b'# print(r_data[0])\n# print(r_data[1])\n\n# import _thread\n# import')

assert n == 64
m1 = mem().getNow()
for i in range(1000):
    n = a.write(b'import osTimer33332 cnt=0332 cnt1=033332 def test_cb(arg):332global cnt332cnt+=1332123123123123231231')

assert n == 101
m2 = mem().getNow()
a.close()
print('PASS')
print('mem: ', m2- m0)
exit()

说明:循环写入并配合 MemChecker 观察内存变化;设备上可用类似方式做简单内存监控。

大文件读取(bigfile.py)

f = open('test/assets/pic1.jpg', 'rb')
b = f.read(-1)
f.close()

说明:read(-1) 读取整个文件到内存,大文件时注意设备 RAM 限制。

注意事项

  • 路径需符合设备文件系统(如 LittleFS),且文件已存在或目录可写。
  • 读写后应 close(),或使用 with(若运行时支持)以避免资源泄漏。
  • 二进制模式使用 'rb'/'wb',文本模式使用 'r'/'w'

相关链接