【问题标题】:Python - Specific Files Denied PermissionPython - 特定文件被拒绝权限
【发布时间】:2020-12-02 21:07:33
【问题描述】:

我正在尝试遍历目录中的 22 个 .txt 文件,从文件中读取每一行,并应用一些条件,然后将修改后的行写入不同文件夹中新创建的文件中。

问题是前 12 个文件已成功创建,但随后我收到所有后续文件的权限被拒绝错误。失败文件的权限与成功文件的权限完全相同。

这是我的代码的简化版本,为简单起见,排除了一堆 if 条件:

files =  os.listdir('./folder/')
for file in files:
    with open('./folder/' + file, "r") as input:
        with open('./folder/mod/' + file[:-4] + '_mod.txt', "w") as output:
            lines = input.readlines()
            for i in range(len(lines)):
                if lines[i][-7:-1] != '    },':
                    output.write('\n' + lines[i][:-4].replace('"',''))
        output.close()
    input.close()

我试图从源文件夹中完全排除前 12 个文件,然后没有写入一个文件。好像问题真的出在 .txt 文件本身一样。这些文件都是同时生成的,而且相当简单,所以我无法确定它们之间的任何区别。

这是返回的堆栈跟踪:

Traceback (most recent call last):
  File "C:\Users\myname\Documents\project1\main.py", line 8, in <module>
    with open('./folder/' + file, "r") as input:
IOError: [Errno 13] Permission denied: './folder/mod'

***编辑 如果我在源文件夹中只留下一个成功读写的文件,则操作成功,但我仍然得到相同的权限被拒绝错误。

【问题讨论】:

    标签: python permissions


    【解决方案1】:

    堆栈跟踪表明问题在于:

    `with open('./folder/' + file, "r") as input:`
    

    正在尝试打开并读取“文件夹/mod/”

    os.listdir() 将创建文件夹中所有内容的列表,包括目录。 因此,由于您无法“读取”目录,python 会给您一个权限错误。

    加个测试看看for循环中的“文件”是否真的是一个文件应该可以解决问题:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-10
      • 2012-11-24
      • 2017-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-28
      • 2017-12-25
      相关资源
      最近更新 更多