On 22 September 2017 at 03:57, Evuraan <evur...@gmail.com> wrote: >>>> result = subprocess.run(["tail", "-400", "/tmp/pmaster.txt"], >>>> stdout=subprocess.PIPE) >>>> result.returncode > 0 >>>> subprocess.getstatusoutput("file /tmp/pmaster.txt",) > (0, '/tmp/pmaster.txt: Non-ISO extended-ASCII text, with very long > lines, with LF, NEL line terminators') >>>>
You’re still using the deprecated function. >>> subprocess.run(['file', '/tmp/pmaster.txt'], stdout=subprocess.PIPE) CompletedProcess(args=['file', '/tmp/pmaster.txt'], returncode=0, stdout=b'/tmp/pmaster.txt: Non-ISO…\n') >>> result = _ # underscore means result of previous line in interactive mode >>> result.stdout b'/tmp/pmaster.txt: Non-ISO…line terminators\n' >>> result.returncode 0 And if you want to get a Unicode string (if output of command is your system encoding, hopefully UTF-8): >>> subprocess.run(['file', '/tmp/pmaster.txt'], stdout=subprocess.PIPE, >>> universal_newlines=True) CompletedProcess(args=['file', '/tmp/pmaster.txt'], returncode=0, stdout='/tmp/pmaster.txt: Non-ISO…\n') >>> (_.stdout is an unicode string) Also, going back to your original example: you should not be using `tail` from within Python. You should not depend on tail being available (it’s not on Windows), and there may also be version differences. Instead of tail, you should use Python’s standard file operations (open()) to accomplish your task. [advertisement] Extra reading on security (shell=False) and the necessity of calling subprocesses: https://chriswarrick.com/blog/2017/09/02/spawning-subprocesses-smartly-and-securely/ [/advertisement] -- Chris Warrick <https://chriswarrick.com/> PGP: 5EAAEA16 _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor