簡體   English   中英

在 Python 中使用 cat 命令進行打印

[英]Using cat command in Python for printing

在 Linux kernel 中,我可以使用以下命令將文件發送到打印機

cat file.txt > /dev/usb/lp0

據我了解,這會將 file.txt 中的內容重定向到打印位置。 我嘗試使用以下命令

>>os.system('cat file.txt > /dev/usb/lp0') 

我以為這個命令會達到同樣的目的,但它給了我一個“權限被拒絕”的錯誤。 在命令行中,我會在連接之前運行以下命令。

sudo chown root:lpadmin /dev/usb/lp0

有一個更好的方法嗎?

雖然您的代碼沒有理由不起作用,但這可能不是您想要的方式。 如果你只想運行shell命令, bashpython要好得多。 另一方面,如果要使用Python,則有比shell重定向更好的方法來復制文件。

將一個文件復制到另一個文件的最簡單方法是使用shutil

shutil.copyfile('file.txt', '/dev/usb/lp0')

(當然,如果您遇到阻止重定向工作的權限問題,則復制時會遇到相同的權限問題。)


您需要一個程序從鍵盤讀取輸入,當它獲得某個輸入時,它會打印一個特定的文件。 這很容易:

import shutil

while True:
    line = raw_input() # or just input() if you're on Python 3.x
    if line == 'certain input':
        shutil.copyfile('file.txt', '/dev/usb/lp0')

顯然,一個真正的程序會更復雜 - 它會使用不同的命令做不同的事情,並且可能會使用參數來告訴它要打印哪個文件,依此類推。 如果你想這樣, cmd模塊是一個很好的幫助。

請記住,在UNIX中 - 一切都是文件。 甚至設備。

因此,您可以使用基本(或其他任何,例如shutil.copyfile)文件方法( http://docs.python.org/2/tutorial/inputoutput.html#reading-and-writing-files )。

在你的情況下代碼可能只是一種方式 )是這樣的:

#  Read file.txt
with open('file.txt', 'r') as content_file:
    content = content_file.read()
with open('/dev/usb/lp0', 'w') as target_device:
    target_device.write(content)

PS請不要使用system()調用(或類似)來解決您的問題。

在 windows 操作系統下沒有cat命令你應該在 windows 下使用type而不是cat

(**如果你想在 windows 下運行cat命令,請查看: https://stackoverflow.com/a/71998867/2723298

import os
os.system('type a.txt > copy.txt')

..或者如果您的操作系統是 linux 並且 cat 命令無論如何都不起作用這里是復制文件的其他方法.. grep:

   import os
    
   os.system('grep "" a.txt > b.txt')

* ' '很重要!

使用 sed 復制文件:

os.system('sed "" a.txt > sed.txt')

使用 awk 復制文件:

os.system('awk "{print $0}" a.txt > awk.txt')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM