Сценарий Python в Unix записывает в файл CSV, но нечитаемые символы в конце файла в Windows 7 - PullRequest
0 голосов
/ 20 ноября 2018

Я все еще изучаю python, и я написал скрипт, который регистрирует на устройствах cisco и запускает команду, пишет в файл csv и отправляет как вложение электронной почты, но при открытии файла на моем компьютере с Windows он имеет нечитаемые символы: enter image description here

Если маршрутизатор недоступен, просто записывает файл с сообщением устройства и показывает 0 как пустой файл в Unix, но в Windows я вижу это: enter image description here

Ниже приведен скрипт:

> def ssh_conn():
>     user = 'xxxxxxx'
>     passwd = 'xxxxxx'
>     file2 = ("hostfile")
>     hosts = open(file2,'r')
>     for host in hosts:
>             try:
>                    hostIp = host.split(',')[1]
>                    device = host.split(',')[0]
>                    session = paramiko.SSHClient()
>                    session.set_missing_host_key_policy(paramiko.AutoAddPolicy())
>                    session.connect(hostIp.strip(), username = user, password = passwd)
>                    connection = session.invoke_shell()
>                    connection.send("terminal  width 0\n")
>                    connection.send("sh archive config differences nvram:startup-config system:running-config | exc !|Diff\n")
>                    time.sleep(1)
>                    output = connection.recv(5000)
>                    f = open(device +".csv", "w")
>                    f.write(output+'\n')
>                    f.close()
>             except:
>                    #f1 =codecs.open(device +"-DOWN.csv", "w", encoding="utf_16")
>                    f1 = open(device +"-DOWN.csv", "w")
>                    f1.close()
>                    pass
>     files = glob.glob('*.csv')
>     for file in files:
>         if os.stat(file).st_size > 0:
>             try:
>                df=pd.read_csv(file,skiprows = 1).dropna()
>                if len(df) <=2:
>                   os.remove(file)
>                elif len(df) > 2:
>                   df=pd.read_csv(file, skiprows = 1, header=True).dropna()
>                   df.to_csv(file, index=False)
>                else:
>                   print 'Empty File..passing'
>                pass
>             except ValueError:
>                 print 'Modified file'
>             pass ssh_conn()  print "Completed!"

Я пробовал использовать некоторые кодировщики, но те же.Также пытался записать в текстовый файл то же самое.Надеюсь, что вы можете дать подсказку.

1 Ответ

0 голосов
/ 22 ноября 2018

На самом деле проблема была в том, что скрипт отправлял вложения электронной почты, которые я исправил, поэтому закрытие вопроса. Сценарий выше работает нормально

...