gpt4 book ai didi

python - 如何对两个文件执行错误处理?

转载 作者:行者123 更新时间:2023-12-03 08:07:15 25 4
gpt4 key购买 nike

因此,我有两个文件,因此要检查其有效性,我执行了tryexcept两次。但是我认为这不是一个好方法,您能建议一个更好的方法吗?

这是我的代码:

def form_density_dictionary(self,word_file,fp_exclude):
self.freq_dictionary={}
try:
with open(fp_exclude,'r')as fp2:
words_excluded=fp2.read().split() #words to be excluded stored in a list
print("**Read file successfully :" + fp_exclude + "**")
words_excluded=[words.lower() for words in words_excluded] # converted to lowercase

except IOError:
print("**Could not read file:", fp_exclude, " :Please check file name**")
sys.exit()

try:
with open(word_file,'r') as file:
print("**Read file successfully :" + word_file + "**")
words_list=file.read()
if not words_list:
print("**No data in file:",word_file +":**")
sys.exit()
words_list=words_list.split()
words_list=[words.lower() for words in words_list] # lowercasing entire list
unique_words=list((set(words_list)-set(words_excluded)))

self.freq_dictionary= {word:("%6.2f"%(float((words_list.count(word))/len(words_list))*100)) for word in unique_words}
#print((len(self.freq_dictionary)))
except IOError:
print("**Could not read file:", word_file, " :Please check file name**")
sys.exit()

也欢迎任何其他建议使它变得更pythonic。

最佳答案

跳出来的第一件事是缺乏一致性和可读性:在某些行中您缩进了4个空格,在另一些行中您仅使用了2个空格;在某些地方,您在逗号后放置一个空格,在其他地方则没有,在大多数地方您在赋值运算符(=)周围没有空格...

保持一致并使代码可读。最常用的格式是使用四个空格进行缩进,并始终在逗号后留一个空格,但比起保持一致更重要,这意味着无论您选择什么,在整个代码中都坚持使用空格。它使所有人(包括您自己)的阅读变得更加容易。

我认为您可以改善以下几项内容:

  • 有一个异常处理块,而不是两个。
  • 您也可以在一行中打开两个文件。
  • 更好的是,结合前面的两个建议,并有一个单独的方法从文件中读取数据,从而消除了代码重复,并使main方法更易于阅读。
  • 对于字符串格式化,首选使用.format()而不是%。检查一下:https://pyformat.info/
  • 总体上尝试避免代码重复。如果您要做的事情不止一次,则将其提取到单独的函数或方法中,然后使用它。

  • 这是将您的代码快速修改为我可能编写的方式,并考虑了以下因素:
    import sys


    class AtifImam:
    def __init__(self):
    self.freq_dictionary = {}

    def form_density_dictionary(self, word_file, exclude_file):
    words_excluded = self.read_words_list(exclude_file)
    words_excluded = self.lowercase(words_excluded)

    words_list = self.read_words_list(word_file)
    if len(words_list) == 0:
    print("** No data in file: {} **".format(word_file))
    sys.exit()

    words_list = self.lowercase(words_list)

    unique_words = list((set(words_list) - set(words_excluded)))

    self.freq_dictionary = {
    word: ("{:6.2f}".format(
    float((words_list.count(word)) / len(words_list)) * 100))
    for word in unique_words
    }

    @staticmethod
    def read_words_list(file_name):
    try:
    with open(file_name, 'r') as file:
    data = file.read()
    print("** Read file successfully: {} **".format(file_name))
    return data.split()
    except IOError as e:
    print("** Could not read file: {0.filename} **".format(e))
    sys.exit()

    @staticmethod
    def lowercase(word_list):
    return [word.lower() for word in word_list]

    关于python - 如何对两个文件执行错误处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39829233/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com