【问题标题】:Errno 22 Invalid Argument PythonErrno 22 无效参数 Python
【发布时间】:2019-10-13 03:16:41
【问题描述】:

我试图将一个文件的内容复制到另一个文件,但出现错误,我做错了什么?

for file in os.listdir('offer'):
    if '.css' in file:
        print(file)
        with open(f'offer/{file}', 'r+') as f:
            with open('offer/id.css', 'w+') as style_file:
                shutil.copyfile(f'offer/{f}', f'offer/{style_file}')
Traceback (most recent call last):
  File "C:/Users/Katerina/Desktop/python/test_attempt.py", line 50, in <module>
    shutil.copyfile(f'offer/{f}', f'offer/{style_file}')
  File "C:\Users\Katerina\AppData\Local\Programs\Python\Python37-32\lib\shutil.py", line 120, in copyfile
    with open(src, 'rb') as fsrc:
OSError: [Errno 22] Invalid argument: "offer/<_io.TextIOWrapper name='offer/id.css' mode='r+' encoding='cp1251'>"

【问题讨论】:

  • 您将文件处理程序传递给字符串格式化程序。不太清楚为什么需要打开文件...只需将 offer/{file}offer/id.css 作为 args 传递给 copyfile?
  • shutil.copyfile 只是将一个命名文件替换为另一个;它接受文件名,而不是打开的文件句柄,作为参数。
  • 试图通过打开删除,现在我需要的文件只保存最后一个文件用于循环数据,但我需要全部捕获

标签: python file shutil file-copying


【解决方案1】:

我猜你正在寻找类似的东西

with open('offer/id.css', 'w') as style_file:
    for file in os.listdir('offer'):
        if '.css' in file:
            #print(file)
            with open(f'offer/{file}', 'r+') as f:
                for line in f:
                    style_file.write(line)

shutil.copyfile的用途不同;它实际上并不允许您访问或修改任一文件的内容,它只是将一个复制到另一个。

【讨论】:

    【解决方案2】:

    我知道这不是您的问题,但是当我在运行 shutil.copy 时遇到一般的 [Errno 22] Invalid Argument 错误时,问题是应用帐户的目标文件夹的权限已更改。我只需要将文件夹的Write Permissions 恢复到运行应用程序的帐户即可。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-02-10
      • 2016-05-29
      • 1970-01-01
      • 1970-01-01
      • 2019-04-27
      • 1970-01-01
      相关资源
      最近更新 更多