【问题标题】:Python Automate the Boring Stuff: Bullet Points can't run programPython 自动化无聊的东西:Bullet Points 无法运行程序
【发布时间】:2018-08-06 20:35:23
【问题描述】:

好的,我正在编写第 6 章关于自动化无聊的东西,但我无法理解如何让它运行项目。它运行,但出现的只是“按任意键继续...”。就像我不能输入和字符串让它工作......或者至少我认为它应该是这样的。我还不是最擅长 pyperclip 或让事情运行起来。

谁能帮助我了解如何让它工作,以便我可以有一些输出?我也不确定如何在 cmd 行中使用剪贴板,有什么想法吗?

#! python3
# bulletPointAdder.py - Adds Wikipedia bullet points to the start
# of each line of text on the clipboard.

import pyperclip
text = pyperclip.paste()

# Separate lines and add stars.
lines = text.split('\n')
for i in range(len(lines)):    # loop through all indexes for "lines" list
    lines[i] = '* ' + lines[i] # add star to each string in "lines" list
text = '\n'.join(lines)
pyperclip.copy(text)

这是我正在使用的 bin 文件:

 @py C:\Users\david\MyPythonScripts\AddingBullets.py %*
@pause

【问题讨论】:

  • 我是 Automate the Boring Stuff with Python 一书的作者:这个程序的工作原理是让用户将文本复制到剪贴板,然后是程序。该程序会将修改后的文本放回剪贴板,以便用户可以粘贴它。如果你也想要输出,你可以在最后添加一个 print(text) 行。但是这个输出不是必需的,它只是提供信息和装饰。
  • 哦,好的。感谢您花时间回复。一个简单的问题,剪贴板到底是什么?很明显我只是有点慢。
  • “剪贴板”是操作系统提供的一种功能,您可以在其中临时存储文本、文件或图像。您可以将内容从一个程序“复制”到剪贴板,然后将其“粘贴”到另一个程序中。这使您不必重新键入文本。 Pyperclip 为 Python 脚本提供了一种将文本写入(“复制”)和从(“粘贴”)剪贴板读取文本的方法。
  • 好吧,现在说得通了。这就是我一开始的想法,但我不确定。感谢您抽出宝贵时间回复。
  • 我也遇到了问题 - 但是 - 在我正确遵循程序后程序运行良好 Al Sweigart 指出 - 我的错误是没有跟踪我在剪贴板上复制的内容。 How2 - 1 打开命令提示符 (CMD) 2 将目录更改为保存 bulletPointAdder.py 的位置 3 在记事本中创建一个列表 4 在记事本中复制列表 5 在 CMD 中(现在指向持有 bulletPointAdder.py 的主管)并键入 bulletPointAdder.py 6在新的记事本 8 上点击 Enter 7 粘贴列表 沉浸在 Python 的荣耀中。

标签: python project pyperclip


【解决方案1】:
import pyperclip
text  = pyperclip.paste()
text = text.split("\n")
for i in text:
    print( "* " + i)

-上面的代码比书中解释的要简单得多。

【讨论】:

    【解决方案2】:

    我对 pyperclip 不是特别熟悉,但您似乎并没有告诉 pyperclip.paste() 您想将什么文本分配给变量“text”。

    我查看了文档,在您输入“pyperclip.paste()”之前,您需要输入“pyperclip.copy(text)”才能将某些内容复制到剪贴板。现在您告诉 pyperclip 将剪贴板上的任何内容粘贴到文本中,但剪贴板上没有任何内容。

    希望有帮助。

    更新

    我在终端中运行了这个程序,它可以工作:

    #! python3
    # bulletPointAdder.py - Adds Wikipedia bullet points to the start
    # of each line of text on the clipboard.
    
    import pyperclip
    pyperclip.copy("Hello World")
    text = pyperclip.paste()
    
    # Separate lines and add stars.
    lines = text.split('\n')
    for i in range(len(lines)):    # loop through all indexes for "lines" list
        lines[i] = '* ' + lines[i] # add star to each string in "lines" list
    text = '\n'.join(lines)
    pyperclip.copy(text)
    print(text)
    

    输出:

    * Hello World
    

    【讨论】:

    • 我尝试在 pyperclip.paste() 中添加一些文本,但不幸出现错误。
    • 还有另一个错误:TypeError:lazy_load_stub_copy() 缺少 1 个必需的位置参数:'text' 如果我在 text 变量之前添加 pyperclip.copy()
    • 看起来 Stack Overflow 在我发布之前自动更改了我的答案。你应该输入 pyperclip.copy("Type your text here")
    • 错误所指的一个位置参数是您必须插入到 pyperclip.copy() 中的文本,否则不会复制任何内容。
    • 不幸的是,这也不起作用。顺便说一句,对不起,我一直很忙。
    【解决方案3】:

    代码运行良好。我是这样测试的:

    1. 制作.txt文件
    2. 制作一堆列表项并保存
    3. 现在复制您的列表项
    4. 使用path file 打开终端并运行PointAdder.py
    5. 返回或打开另一个.txt 文件并粘贴,您应该会得到每行带有* 的列表

    【讨论】:

      【解决方案4】:

      代码没问题。我是这样测试的:

      1. 制作一个example.txt文件并在其中写入字符串列表。

      2. 复制它(就像使用 CTRL +C 一样)。

      3. 然后制作一个 bat 文件,将其命名为 bulletPointAdder.bat 并在里面粘贴 2 行 @ 与您的 py 文件路径,第二行带有暂停。保存。

      4. 现在转到 cmd(到 py 文件的路径)并运行 bulletPointAdder.bat

      5. 进入 example.txt 文件并粘贴 (CTRL+P)。现在你看到了魔法。 bat文件通过在前面添加星号来转换stings)

      【讨论】:

        猜你喜欢
        • 2020-08-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-09-22
        • 2020-05-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多