首页 > 解决方案 > Python 3 将随机亚洲字符附加到文件中,哪种编码是正确的?

问题描述

我正在编写一个小脚本,它获取 pip freeze 的输出并将其与旧文件进行比较。然后它将新包附加到文件的末尾。我正在 Windows 10 上开发。

奇怪的是,无论我采用哪种编码,附加随机亚洲字符的行为都不会改变。您可以在下面找到文本,我也会将输出粘贴进去。我相信输出会略有变化,但我不能确定。

谢谢你。

import subprocess, sys, os

reqs = subprocess.check_output([sys.executable, '-m', 'pip', 'freeze']).decode("utf-8") # run pip freeze
reqs = reqs.replace("\n", "").split("\r")   # filter the newline characters

with open("../requirements.txt", "a+") as f:
    old_packages = f.readlines()
    f.write("\n# New Packages: Unidentified")
    for line in reqs:
        if line not in old_packages:
            l = "\n" + line
            f.write(l)
        else:
            continue

requirements.txt 中的输出:

┍䁻䂦臗铳螁ꊅ䁺阛蒉閅覣覆蒅┍獡楧敲㵦㌽㈮ㄮരਥ獡牴楯㵤㈽㐮㈮┍䌊捡敨潃瑮潲㵬〽ㄮ⸲ശ९㵤㈽㐮㈮┍䌊捡敨潃瑮潲㵬〽ㄮ⸲ശഽㄮ⸲ശഽㄮ ⸱റਥ㈽㈰⸰⸶〲┍挊慨㴽⸳⸰ഴ慲慭㴽ਥ橄湡潧㴽㴽⸳റਥ蕊湡潧潧挭畯瑮瑮楲楲楲潧昭汩整㵲㈽㌮〮┍搊怄杮ⵯ畧牡楤湡㴽⸲⸳രਥ蕊湡潧敲瑳牦浡睥牯㵫㌽ㄮ⸱റਥ楦楦慢敲業愭浤湩ഽ⸴⸳楦楰歰歰歰歰歰歰歰敬牯㵥ㄽ㈮⸲റਥ潧杯敬扩愭楰瀭瑹潨⵮汣敩瑮㴽⸱〱〮┍朊浔汧ⵥ畡桴㴽⸱〲ㄮ┍服朊浔汧ⵥ㕴桀栉ⵥ㕴桀栀㐍浔汧ⵥ汣畯ⵤ潣敲㴽⸱⸴റਥ潧杯敬挭潬摵昭物獥潴敲㴽⸱⸸റਥ潧潧敬挭潬摵猭潴慲敧㴽⸱〳〵┥朊浔挲㴽⸱〳〵┥朊浔挲㴽⸰⸱രਥ潧杯敬争獥浵扡敬洭摥慩㴽⸰⸷റਥ潧杯敬灡獩挭浯潭⵮牰琅獯㴽⸱㈵〮┍朊灲楣㵯ㄽ㌮⸱㥬祯ㄮ┍ㄮര獩牯㵴㐽慬祺漭椭捥牰砚㵹ㄽ㐮㐮㌮┍䴊牡摫睯睯㵮㌽㈮㈮┍洊捣洊捣扡㵥扡㵥扡㵥正㴽⸱⸰രਥ牰琅扯晵㴽⸳㈱㐮┍瀊慹湳㴱〽㐮㠮┍瀊慹湳ⴱ潭畤敬㵳〽㈮㠮┍瀊琅湩㵴㈽㈱㐮⸵㈽㈱㐮┴㈽㈹湳㴱〽㐮㠮┍瀊慹湳ⴱ潭畤敬㵳〽㈮㠮┍瀊箩湩㵴㈽㔮㔮㌮┲怳㊧ヮ⸵┳扪湳⸵ രਥ瀭⵮瑵汩㵳〽瀊瑹ਥ敲留敲留㴽㴽⸲㐲㐲〮┍爊悭㴽⸴ശ⸴ശਥ楳㵸楳㵸楳㵸ㄽㄽ汭㴽⸰〱ㄮ┍甊楲整灭慱㴽⸳⸰റਥ牵汬扩㴳ㄽ㈮⸵〱┍眊慲瑰㴽⸱㈱ㄮ┍

标签: python-3.xfilefile-iopipsubprocess

解决方案


尝试改变

with open("../requirements.txt", "a+") as f:

with open("../requirements.txt", "a+", encoding = "utf-8") as f:

推荐阅读