[英]Python - function to write multiple files with loop
我正在尝试编写一个使用循环写入多个文件的函数,但没有成功。 这是代码和结果。 该目录确实存在; 我能够毫无问题地写入、读取和附加单个文件。 这是在 Windows 10 上的普通 Python 3.9 交互式命令行窗口中完成的。
def writepages(i):
for j in range(i):
name = f"0{j}0page.html"
file = open(f'C:\\Users\\cumminjm\\Documents\\{name}', 'r+')
file.close()
>>>
>>> writepages(5)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 4, in writepages
FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Users\\cumminjm\\Documents\\000page.html'
不像"w"
或"a"
, "r+"
要求文件已经存在; 如果文件不存在,则不会创建该文件。
您应该使用不同的文件模式——例如:
w
打开一个(可能是新的)文件,如果存在则清空它。a
打开一个(可能是新的)文件,但不清空它。x
打开一个新文件,如果存在则失败并显示FileExistsError
。 正如@chepner指出的那样, r+
打开一个现有文件进行读写。
根据此答案,您还可以使用os.mknod("newfile.txt")
,但它需要在 macOS 上具有 root 权限。
这有点离题,但您可能想了解pathlib
,它为您提供了一种与操作系统无关的方式来处理文件路径,并使用上下文打开文件,这比open
/ close
更安全。 以下是我可能会编写该函数的方式:
import pathlib
def writepages(i):
"""Write i HTML pages."""
for j in range(i):
fname = pathlib.Path.home() / 'Documents' / f'0{j}0page.html'
with open(fname, 'x') as f:
f.write('')
return
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.