【问题标题】:Permission being denied as I'm trying to write to a tsv file当我尝试写入 tsv 文件时,权限被拒绝
【发布时间】: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 循环的进行,我正在生成新的文件名,这是导致此错误的原因吗?

标签: python pandas csv


【解决方案1】:

将to_csv中的文件夹名替换为文件名(下面的tsvfile):

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)
        tsvfile = foldername + '\\filename.tsv'
        headerInfo.to_csv(tsvfile, index=False)
        value1.to_csv(tsvfile, mode='a', index=False)

【讨论】:

    猜你喜欢
    • 2017-03-27
    • 2016-05-27
    • 2015-08-24
    • 2013-03-19
    • 2011-12-23
    • 2020-11-11
    • 2013-12-20
    • 1970-01-01
    • 2020-05-01
    相关资源
    最近更新 更多