Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python 3.8写入文件时出现权限错误_Python - Fatal编程技术网

使用Python 3.8写入文件时出现权限错误

使用Python 3.8写入文件时出现权限错误,python,Python,我正在按单词的长度拆分一个大单词列表 我没有找到不同的方法,所以我决定用python为它编写一个脚本 说test.txt有 话 言语 我希望它根据行的长度生成新的文本文件,并将行写入其中 4.txt 话 5.txt 言语 代码 import os import sys basefile = open(sys.argv[1],'rt') print("Writing.....") os.mkdir(str(os.path.splitext(sys.argv[1])[0]))

我正在按单词的长度拆分一个大单词列表 我没有找到不同的方法,所以我决定用python为它编写一个脚本

test.txt

言语

我希望它根据行的长度生成新的文本文件,并将行写入其中

4.txt

5.txt

言语

代码

import os
import sys

basefile = open(sys.argv[1],'rt')
print("Writing.....")
os.mkdir(str(os.path.splitext(sys.argv[1])[0]))
os.chdir(os.path.splitext(sys.argv[1])[0])
#print(basefile)
for line in basefile:
    cpyfile=open(str(len(line.strip()))+'.txt',mode = 'a',encoding = 'utf-8')
    cpyfile.write(line)
    cpyfile.close()
print("Done")
basefile.close()
它适用于小文件,但对于较大的文件,它会在一段时间后发出错误

PermissionError: [Errno 13] Permission denied: '10.txt'

错误文件也是完全随机的,前面写的行也完全正常

我使用powershell和gitbash在windows上试用过它


非常感谢您的帮助,我怀疑您遇到了Windows不允许两个程序同时打开同一个文件的问题。我不确定第二个项目是什么。也许是病毒扫描器?你的程序在Ubuntu上使用/usr/share/dict/american english不做任何改动,所以我认为这可能是Windows的问题

在任何情况下,我认为您都可以通过在程序运行时保持文件打开来解决这个问题

import os
import sys

basefile = open(sys.argv[1], 'rt')
print("Writing.....")
os.mkdir(str(os.path.splitext(sys.argv[1])[0]))
os.chdir(os.path.splitext(sys.argv[1])[0])
# print(basefile)
files = {}
try:
    for line in basefile:
        cpyfilename = str(len(line.strip()))+'.txt'
        cpyfile = files.get(cpyfilename)
        if cpyfile is None:
            cpyfile = open(cpyfilename, mode='a', encoding='utf-8')
            files[cpyfilename] = cpyfile
        cpyfile.write(line)
finally:
    for cpyfile in files.values():
        # Not strictly necessary because the program is about to end and
        # auto-close the files.
        cpyfile.close()
print("Done")
basefile.close()

你能检查一下文件权限吗?右键单击文件写入->属性->安全选项卡?这可能与不久前我在windows上遇到的类似问题相似。解决方法是进行几次重试,每次尝试之间增加停顿。它看起来不像许多与windows相关的问题。但它奏效了
import os
import sys

basefile = open(sys.argv[1], 'rt')
print("Writing.....")
os.mkdir(str(os.path.splitext(sys.argv[1])[0]))
os.chdir(os.path.splitext(sys.argv[1])[0])
# print(basefile)
files = {}
try:
    for line in basefile:
        cpyfilename = str(len(line.strip()))+'.txt'
        cpyfile = files.get(cpyfilename)
        if cpyfile is None:
            cpyfile = open(cpyfilename, mode='a', encoding='utf-8')
            files[cpyfilename] = cpyfile
        cpyfile.write(line)
finally:
    for cpyfile in files.values():
        # Not strictly necessary because the program is about to end and
        # auto-close the files.
        cpyfile.close()
print("Done")
basefile.close()