尝试使用 zipfile 和 pathlib 模块打开目录时出现 PermissionError
PermissionError when attempting to open directory with zipfile and pathlib modules
我正在尝试使用 pathlib
创建一个 zip 文件,但出现权限错误。看代码:
from pathlib import Path
from zipfile import *
import os
from datetime import datetime
time = str(datetime.now())
day = int(time.split(' ')[0].split('-')[2])
month = int(time.split(' ')[0].split('-')[1])
year = int(time.split(' ')[0].split('-')[0])
hour = int(time.split(' ')[1].split(':')[0])
minute = int(time.split(' ')[1].split(':')[1])
filename = f"ilhadodede{day:02d}{month:02d}{year:04d}-{hour:02d}-{minute:02d}.zip"
print(f"{day}/{month}/{year} {hour}:{minute}")
zipped = ZipFile(filename, "w", ZIP_DEFLATED)
print(Path(Path("world") / file))
for root, dirs, files in os.walk("world"):
for file in files:
zipped.write(os.path.join(root, file))
for f in zipped.infolist():
print(f.filename)
这是错误:
Traceback (most recent call last):
File "C:/Users/dyeff/Documents/Server Ilha do Dedé/universal_backup.py", line 20, in <module>
zipped.write(os.path.join(root, file))
File "C:\Users\dyeff\AppData\Local\Programs\Python\Python38\lib\zipfile.py", line 1776, in write
shutil.copyfileobj(src, dest, 1024*8)
File "C:\Users\dyeff\AppData\Local\Programs\Python\Python38\lib\shutil.py", line 202, in copyfileobj
buf = fsrc_read(length)
PermissionError: [Errno 13] Permission denied
这是抛出错误的行:
zipped.write(os.path.join(root, file))
这样的错误
PermissionError: [Errno 13] Permission denied
是由于缺乏对该目录 write/read
的许可的结果。
要确认这是错误的原因,您可以尝试在该命令 zipped.write(os.path.join(root, file))
将输出到的目录中创建并保存一个文件。如果是这种情况,那么您可以查看如何更改您正在使用的操作系统的目录权限,请参阅 here for Linux
。
如果您正在使用 IDE
,您可以尝试在管理模式下打开它,这将给予 运行 脚本执行 write
操作的完全权限。
我的问题是一个名为 session.lock
的文件。
我做了一个 if 语句来忽略那个文件和错误“飞走了”。
这是我的世界文件中的一个文件(这个程序是在我关闭服务器时自动备份一个世界),它存储了玩家上次进入服务器的日期时间,没有那个文件(这个文件是为了备份很重要,所以与它相关的任何东西现在都在我自己的程序中处理)游戏会自动创建它。
我正在尝试使用 pathlib
创建一个 zip 文件,但出现权限错误。看代码:
from pathlib import Path
from zipfile import *
import os
from datetime import datetime
time = str(datetime.now())
day = int(time.split(' ')[0].split('-')[2])
month = int(time.split(' ')[0].split('-')[1])
year = int(time.split(' ')[0].split('-')[0])
hour = int(time.split(' ')[1].split(':')[0])
minute = int(time.split(' ')[1].split(':')[1])
filename = f"ilhadodede{day:02d}{month:02d}{year:04d}-{hour:02d}-{minute:02d}.zip"
print(f"{day}/{month}/{year} {hour}:{minute}")
zipped = ZipFile(filename, "w", ZIP_DEFLATED)
print(Path(Path("world") / file))
for root, dirs, files in os.walk("world"):
for file in files:
zipped.write(os.path.join(root, file))
for f in zipped.infolist():
print(f.filename)
这是错误:
Traceback (most recent call last):
File "C:/Users/dyeff/Documents/Server Ilha do Dedé/universal_backup.py", line 20, in <module>
zipped.write(os.path.join(root, file))
File "C:\Users\dyeff\AppData\Local\Programs\Python\Python38\lib\zipfile.py", line 1776, in write
shutil.copyfileobj(src, dest, 1024*8)
File "C:\Users\dyeff\AppData\Local\Programs\Python\Python38\lib\shutil.py", line 202, in copyfileobj
buf = fsrc_read(length)
PermissionError: [Errno 13] Permission denied
这是抛出错误的行:
zipped.write(os.path.join(root, file))
这样的错误
PermissionError: [Errno 13] Permission denied
是由于缺乏对该目录 write/read
的许可的结果。
要确认这是错误的原因,您可以尝试在该命令 zipped.write(os.path.join(root, file))
将输出到的目录中创建并保存一个文件。如果是这种情况,那么您可以查看如何更改您正在使用的操作系统的目录权限,请参阅 here for Linux
。
如果您正在使用 IDE
,您可以尝试在管理模式下打开它,这将给予 运行 脚本执行 write
操作的完全权限。
我的问题是一个名为 session.lock
的文件。
我做了一个 if 语句来忽略那个文件和错误“飞走了”。
这是我的世界文件中的一个文件(这个程序是在我关闭服务器时自动备份一个世界),它存储了玩家上次进入服务器的日期时间,没有那个文件(这个文件是为了备份很重要,所以与它相关的任何东西现在都在我自己的程序中处理)游戏会自动创建它。