2017-06-06 9 views
0

私はこのようなものがあります:私はそれはスクリプトが(ディレクトリ内に存在する場合、任意の*.txtファイルを印刷する方法、勝利の例のように、Linuxでのファイルtemp.txtを印刷する方法を知っていただきたいと思いディレクトリに存在するPython3でtxtファイルを印刷するには?

#!/usr/bin/env python3 
# -*- coding: utf-8 -*- 

""" 
Print a file to a default printer 
last edited: June 2017 
""" 

import os 
import sys 
import subprocess 
#import win32print 

if sys.platform == "linux" or sys.platform == "linux2": 
    # linux 
    lpr = subprocess.Popen("/usr/bin/lpr", stdin=subprocess.PIPE) 
    lpr.stdin.write("This is a print-test sentence") 
elif sys.platform == "darwin": 
    # MAC OS X 
    pass 
elif sys.platform == "win32": 
    # Windows 
    os.startfile("C:/temp/temp.txt", "print") 

をそれは1つだけでなければなりません)とそのファイルのエンコーディングを変更する方法(私はDOS 852コードページが必要です)?

+0

は、現在のコードの印刷をい 'これは、どのような試みについてのlinux –

+0

上の印刷文'です声明() – Rosh

答えて

1

どのシステムでもファイルが存在するかどうかを調べるには、まだ最適な組み込みメソッドがあると思います。os.path.isfile(filepath)です。上記のコードはLinuxとWindowsのために働く場合は、このようにそれを行うことができます:開いているファイル、除く:FileNotFoundError ... DO

#!/usr/bin/env python3 
# -*- coding: utf-8 -*- 

""" 
Print a file to a default printer 
last edited: June 2017 
""" 
import os 
import sys 
import subprocess 
#import win32print 

filepath = 'some_file_path' 
if os.path.isfile(filepath): 
    if sys.platform == "linux" or sys.platform == "linux2": 
     # linux 
     lpr = subprocess.Popen("/usr/bin/lpr", stdin=subprocess.PIPE) 
     with open(filepath,'r') as file: 
      lpr.stdin.write(file.read()) 

    elif sys.platform == "darwin": 
     # MAC OS X 
     pass 
    elif sys.platform == "win32": 
     # Windows 
     os.startfile(filepath, "print") 
+0

「お勧め」ありがとうございました。ファイルがなければ、最後に 'else'を追加してstdoutに出力しました。 Zahvaljujem! –

+0

あなたは大歓迎です:) Nema na cemu:D –

+0

ただ1つの誤字。それは 'stdio'ではなく' stdin'だ –

関連する問題