Разобрать информацию из файла Linux в Windows, используя python - PullRequest
0 голосов
/ 08 ноября 2018

Я пытаюсь проанализировать некоторое содержимое из моей среды Linux и вывести его в файл Excel в моей среде Windows, используя python.

eg: foo/bar/myfile.txt содержит некоторое содержимое, которое я хочу прикрепить к файлу Excel в моем windows env C:foo\bar\myfile.txt

Я знаю, как извлечь нужную информацию, но не могу найти решение для создания файла в моей ОС Windows из моей среды Linux в Python. любая маленькая информация помогает. Спасибо!

1 Ответ

0 голосов
/ 08 ноября 2018
import csv
import sys
import subprocess


def env_key_values(host):
    """
    The subprocess.Popen will execute the env command on the remote
    Linux server then return the results.
    """
    ssh = subprocess.Popen(["ssh", host, "env"],
                            shell=False,
                            stdout=subprocess.PIPE,
                            stderr=subprocess.PIPE)
    """
    Read each line from stdout selecting only the varname=value lines.
    Split the line on the '=' character. Use the first element as the 
    Linux environment variable name. Use the remaining elements as the value.
    yield the result.
    """
    for line in ssh.stdout:
        str_line = line[:-1].decode("utf-8")
        if "=" in str_line:
            key_values = str_line.split("=")
            values = "=".join(key_values[1:])
            yield (key_values[0], values)

if __name__ == "__main__":
    """
    Open desired file in write mode, do not enforce EOL character.
    Create a CSV writer specifying the Windows EOL.
    Use \t character for delimiter as the specified file in the question
    used a .txt extension and the user wishes to import the file into Excel.
    """
    with open("file.txt", "w", newline=None) as fout:
        csv_out = csv.writer(fout, delimiter="\t" lineterminator="\r\n")
        csv_out.writerow(["VARNAME","VALUE"])
        for row in env_key_values("ldssbox01"):
            csv_out.writerow(row)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...