【发布时间】:2021-07-03 02:54:03
【问题描述】:
我正在尝试将一系列数据帧写入一系列单独的 tsv 文件,但遇到“PermissionError: [Errno 13] Permission denied”。
我无法附上示例代码,因为很难确定问题区域在哪里,但我很确定我没有在任何地方打开原始 tsv 文件 - 唯一的地方是原始数据文件访问的是基本的“read_csv”,如果相关,则使用 os.walk 和 os.path 访问目录。
下面是我处理输出到 tsv 的代码:
for key,value in Collection.items():
for key1, value1 in value.items():
foldername = r'C:\Users' + '\\' + key + '\\' + key1
if not os.path.isdir(foldername):
os.makedirs(foldername)
headerInfo.to_csv(foldername,index=False)
value1.to_csv(foldername,mode='a',index=False)
base = os.path.splitext(filename)[0]
os.rename(foldername, '.tsv')
我在有关“to_csv”的行中收到错误消息,因此我不确定在此之前是否会打开输出文件。
如果对我的代码有任何见解,我将不胜感激,但也想问一下是否有其他方法可以绕过许可需求?
【问题讨论】:
-
foldername是一个目录。你用os.path.isdir(foldername)检查。然后您尝试将csv写入目录,而不是目录in 中的文件,而是目录本身。因此,PermissionError -
我认为 '.to_csv' 会自动生成一个 csv 文件到给定的目录位置。我应该在调用它之前显式生成一个空白 csv 吗?
-
它会创建一个 csv 但你没有给它一个名字。您正在尝试写入
C:/folder/之类的内容,这不足以定义文件输出。如果你给它C:/folder/filename.tsv它肯定会创建一个新文件。 -
程序是否以管理员身份运行?如果没有,您为什么希望拥有写入多个不同用户文件夹的权限?
-
所以我为文件定义了一个名称(基本上是文件夹名+'\\filename.tsv'),将'to_csv'更改为输出到文件名,现在我得到一个'FileNotFoundError '。随着 for 循环的进行,我正在生成新的文件名,这是导致此错误的原因吗?