【问题标题】:How to write to csv in python with exceptions in the middle如何在python中写入csv,中间有异常
【发布时间】: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


【解决方案1】:

捕获异常并继续,例如:

try:
    read_files_extract_stuff_and_write_to_csv(f, sasfile, writer)
except PermissionError:
    continue

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-17
    相关资源
    最近更新 更多