Некоторые файлы .txt будут открываться с неправильной кодировкой - PullRequest
0 голосов
/ 27 июня 2018

Я работаю над проектом некоторое время, и я только что достигла другого большого шага! Однако для некоторых файлов .txt, которые создает моя программа, она выдаст мне следующее сообщение:

Файл загружен в неправильной кодировке: 'UTF-8'

Большинство файлов .txt в порядке, но это дает мне эту ошибку для других наверху (я все еще могу их прочитать). Вот мой код:

from socket import *
import codecs
import subprocess

ipa = '192.168.1.'  # These are the first 3 digits of the IP addresses that the program looks for.


def is_up(adr):
    s = socket(AF_INET, SOCK_STREAM)
    s.settimeout(0.01)
    if not s.connect_ex((adr, 135)):
        s.close()
        return 1
    else:
        s.close()


def main():
    for i in range(1, 256):
        adr = ipa + str(i)
        if is_up(adr):
            with codecs.open("" + getfqdn(adr) + ".txt", "w+", 'utf-8-sig') as f:
                subprocess.run('ipconfig | findstr /i "ipv4"', stdout=f, shell=True, check=True)
                subprocess.run('wmic/node:'+adr+' product get name, version, vendor', stdout=f, shell=True, check=True)


main()

# Most code provided by Ashish Jain
1007

1 Ответ

0 голосов
/ 28 июня 2018

Поскольку ваш скрипт записывает только файлы, нет смысла открывать его в режиме w+, который позволяет читать. Достаточно открыть файлы в режиме w.

Более того, команды, которые запускает ваш скрипт, не должны выводиться в utf-8-sig кодированном тексте, а следовательно, и в ошибке. В большинстве случаев достаточно вывода с кодировкой по умолчанию без указания кодировки.

Наконец, во второй команде, которую вы запускаете, вам не хватает пробела между wmic и /node:.

...