一个文件正在逃逸我的异常并被创建

2024-10-03 06:27:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试检索一些文档标题,并使用Python 2.7.8创建文件,如下所示:

subject_list= ['this should work1', '[0000] Unhandled exception in Unknown - class something::something', 'this should work2', 
               '[0001] URGENT: something is not working', '[0002] subject: something / all users combined into 1', 'this should work3']
description_list = ['1', '2', '3']


for i in subject_list:
    try:
        fls = open(i + ".txt", 'w')
        fls.writelines('')
        fls.close()
    except Exception as a:
        print(a)
        pass

我尝试创建一个主题为的.txt文件。 如果我想在没有[Error 22]无效模式('w')的情况下工作 我必须替换创建文件时不接受的所有字符(|,\,/,:,“,?,*,<>;)

当我不删除特殊字符时,会创建一个没有扩展名的文件,该扩展名不应该有([0001]紧急:某些文件不起作用),但随后会相应地引发其他文件的异常

知道为什么会这样吗


Tags: 文件in文档txt标题exceptionthissomething
2条回答

我无法用以下代码重现问题:

file_names = ['test1', 'test2', 'test3', 'test*4', 'test5', 'test6']
for file_name in file_names:
    try:
        fls = open(file_name + '.txt', 'w')
        fls.writelines(file_name + ' content')
        fls.close()
        print 'Saved', file_name
    except IOError as a:
        print a

输出为:

Saved test1
Saved test2
Saved test3
[Errno 22] invalid mode ('w') or filename: 'test*4.txt'
Saved test5
Saved test6

这表明跳过了测试*4,但成功保存了以下文件。代码中肯定还有其他问题(可能是beatbox部分),但是可以通过用下划线替换所有特殊字符来避免。正则表达式完全没有痛苦:

file_name = 'hello*world!!'
file_name_clean = re.sub(r'[^\w]+', '_', file_name)
print file_name_clean

输出:

hello_world_

好吧,你有很多事情要做。首先,你为什么不试着打开item.Subject而不是instance[n],因为你正在迭代(用for item in instance)。像这样:

svc = beatbox.PythonClient()
svc.login(username, password+token)
instance = svc.query("my SOQL Query")
for item in instance:
    try:
        fls = open(item.Subject + '.txt', 'w')
        fls.writelines(item.Description)
        fls.close()
    except IOError as a:
        print(a)
        #pass this isn't needed

相关问题 更多 >