代码之家  ›  专栏  ›  技术社区  ›  hbhutta

尝试在目录中创建文件时获取权限错误

  •  0
  • hbhutta  · 技术社区  · 1 年前

    我知道这可能是一个非常常见的问题,我已经看过帖子, here , here here 提出类似的问题。但这些帖子与 到文件。我想 创造 特定目录中的文件。

    具体来说,我正在尝试用许多.mp3文件填充一个文件夹。

    以下是我迄今为止所做的尝试:

    import os 
    
    if not os.path.isdir('testing'):
        os.mkdir('testing')
    
    dir_path = 'testing'
    file_path = 'foo.mp3'
    with open(dir_path, 'x') as f:
        f.write(file_path, os.path.basename(file_path))
    

    我尝试了“x”,因为我看到 here 这会创建一个文件,如果该文件不存在,则会引发错误。我没有得到这个错误,但我得到了这个:

    PermissionError: [Errno 13] Permission denied: 'testing'

    我在链接的第一篇文章中看到,当我试图“打开一个文件,但我的路径是一个文件夹”时,就会发生这种情况。不过,我并不是想打开一个文件,而是想打开一份目录并将一个文件添加到该目录中。

    我还看了答案 this 帖子,但回复者正在写入一个文件,而不是创建一个文件。

    我可能把事情搞得过于复杂了。我能在网上查到的一切都与 到文件,而不是 创建 文件。我相信任务很简单。我做错了什么?

    2 回复  |  直到 1 年前
        1
  •  0
  •   Stitt    1 年前

    您需要通过带有“w”选项的完整路径打开文件。这将为您创建文件并允许您进行写入,就像您正在尝试将文件内容写入目录时一样。

    import os
    
    dir_path = 'testing'
    file_path = 'foo.mp3'
    
    if not os.path.isdir(dir_path):
        os.mkdir(dir_path)
    
    write_path = os.path.join(dir_path, file_path)
    with open(write_path, 'w') as f:
        .
        .
        .
        .
    
        2
  •  0
  •   am33t    1 年前

    试试这个:(在填充之前基本上需要创建一个完整的路径。我在这里使用了.join())

    import os 
    
    dir_path = 'testing' 
    file_path = 'foo.mp3'
    
    if not os.path.isdir(dir_path):
        os.mkdir(dir_path)
    
    full_file_path = os.path.join(dir_path, file_path)
    
    with open(full_file_path, 'w') as f:
        f.write(file_path)