【发布时间】:2017-06-14 19:23:32
【问题描述】:
我正在尝试解析目录并从某些文件中获取一些值。 我无权访问所有文件。 我想编写一个脚本,它将从我可以读取的文件中写入结果,并简单地记录我无权访问的文件。 当我解析可以访问所有文件的目录时,我的 csv 是完美的,但即使抛出一个异常(我使用 try except 处理),我的文件返回空。
def read_files_extract_stuff_and_write_to_csv(f, sasfile, writer):
with SAS7BDAT(sasfile) as fsas:
for col in fsas.columns:
if(col.name == 'blah'):
writer.writerow([sasfile, len(fasas.columns)])
f = open(file.csv, 'w')
writer = csv.writer(f)
for sasfile in directory
try:
read_files_extract_stuff_and_write_to_csv(f, sasfile, writer)
except Exception as ex:
print(ex)
f.close()
我的主要例外是我无权读取这些文件。我只想简单地跳过它们,但是当我这样做时,它是一个空的 csv。
例外: PermissionError: [Errno 13] Permission denied: '//filepath/filename'
【问题讨论】:
-
您的代码看起来不错,但是如果没有看到您用注释替换的部分,很难说出您的问题所在。
-
那么,你会遇到什么异常?是 IOError 还是其他异常?
-
PermissionError: [Errno 13] Permission denied: 'filepath/filename'
-
您的代码不会运行,因为您使用了
for file in directory,但实际上使用了sasfile。您尝试更改原始代码,但我怀疑错误在于您更改的部分。 -
是的,我的错,这只是一个错字。不能复制粘贴。这是一个高度浓缩的逻辑部分。如果我可以访问目录中的所有文件,则代码工作正常。但如果有 1 个文件我无权访问,则整个 csv 为空。
标签: python csv exception-handling