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

新手上路,请多包涵

在 Linux 内核中,我可以使用以下命令将文件发送到打印机

cat file.txt > /dev/usb/lp0

据我了解,这会将 file.txt 中的内容重定向到打印位置。我尝试使用以下命令

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

我认为这个命令会达到同样的效果,但它给了我一个“Permission Denied”错误。在命令行中,我会在连接之前运行以下命令。

 sudo chown root:lpadmin /dev/usb/lp0

有一个更好的方法吗?

原文由 user2125538 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 734
2 个回答

虽然您的代码没有理由不工作,但这可能不是您想要的方式。如果你只想运行 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 模块是一个很大的帮助。

原文由 abarnert 发布,翻译遵循 CC BY-SA 3.0 许可协议

在windows操作系统下没有 cat 命令你应该使用 type 而不是 cat 在windows下

(**如果你想在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')

原文由 BARIS KURT 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题