Parse information from Linux file to Windows using python

I am trying to parse some contents from my Linux environment and dump them into an excel file in my Windows environment using python.

eg: foo/bar/myfile.txt has some contents I want to stick to an excel file in my windows env C:foo\bar\myfile.txt

I know how to extract the information I need but I cannot find a solution to create a file in my Windows OS from my linux env in python. any little info helps. Thanks!

1 answer

  • answered 2018-11-08 03:38 Kristian

    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)