• python open 函数的一些坑


    (1)路径问题
    
    open一个同py文件同一个目录的文件的时候,用以下:
    
    txt = open('/filtered_words.txt','rb')
    words = txt.readline()
    filtered = []
    for word in words:
    filtered.append(word)
    txt.close()
    print(filtered)
    
    会报错
    FileNotFoundError: [Errno 2] No such file or directory: '/filtered_words.txt'
    
    这里写错了一个地方,应该写成
    txt = open('filtered_words.txt','rb')
    也可利用绝对路径
    
    txt = open('E:\python_project\testgithub\filtered_words.txt','rb')
    这样也不会报错
    用反斜杠,这样也不会报错
    
    txt = open('E:/python_project/test/github/filtered_words.txt','rb')
    
    (3)打开文件格式
    
    文档的内容是汉字,用utf-8格式,如果用rb权限open文件,汉字打印出来会变成数字
    
    txt = open('filtered_words.txt','rb')
    words = txt.readline()
    打印结果是:
    [229, 140, 151, 228, 186, 172, 13, 10]
    
     
    
    用r权限open会报错
    
    UnicodeDecodeError: 'gbk' codec can't decode byte 0x98 in position 16: illegal multibyte sequence
    在open的时候,加一个编码
    
    txt = open('filtered_words.txt','r',encoding='UTF-8')
    words = txt.readline()
    打印出来的结果是
    ['', '', '
    ']
    
    把readline换成read函数,打印结果是
    
    ['', '', '
    ', '', '', '', '
    ', '', '', '']
    
    自行百度了read()、readline()、readlines()的区别,最后代码整理
    
    txt = open('filtered_words.txt','rb',encoding='UTF-8')
    wor = txt.readlines()
    filtered = []
    for word in wor:
    word = word.strip('
    ')
    filtered.append(word)
    print(word)
    txt.close()
    print(filtered)
    打印结果是['北京', '程序员', '公务员']
    
    
    最终代码如下:
    class senseWord():
    def __init__(self):
    self.list = []
    file = open('filtered_words.txt','r',encoding='UTF-8')
    words = file.readlines()
    for word in words:
    word = word.strip('
    ')
    self.list.append(word)
    
    def checkwords(self,str):
    if str in self.list:
    return True
    else:
    return False
    
    
    if __name__ == '__main__':
    sense = senseWord()
    str = input('input a string')
    if sense.checkwords(str) == True:
    print('freedom')
    else:

    ————————————————

  • 相关阅读:
    今天碰到的angular 中的一个小坑
    mvc 防止客服端多次提交
    自定义通用Distinct去除重复数据的2中方式
    Sql 字符串操作类COALESCE
    SQL Server 性能优化
    Visual Studio Tip: Get Public Key Token for a Strong Named Assembly
    C#发送邮件
    Web打印组件jatoolsPrinter(转载)
    SQL SERVER 2005 同步复制技术(转)
    [Asp.net]常见word,excel,ppt,pdf在线预览方案(转)
  • 原文地址:https://www.cnblogs.com/Rivend/p/11785078.html
Copyright © 2020-2023  润新知