我想编写一个 python 脚本来上传我在 Windows 资源管理器中选择的任何文件。这个想法是在 Windows 资源管理器中选择任何文件,右键单击以显示文件的上下文菜单,然后从那里选择一个命令……比如“上传到 Web 服务器”。
选择命令后,Python 运行一个脚本,该脚本接收要上传的文件的文件路径和文件名。编写将文件上传到网络的 Python 脚本似乎很简单。不清楚的是如何在 Windows 上下文菜单中为 Python 脚本创建一个实体。以及如何将文件路径和文件名传递给Python脚本来捕捉....请指教!
假设是 Windows 7,如果你打开一个文件夹并在地址栏中输入“shell:sendto”,然后按回车键,你将被带到上下文菜单。您可以添加一个包含以下内容的 .cmd 文件。
@echo off
cls
python C:\Your\File\uploadscript.py %1
这应该执行将文件 (%1) 作为参数传入的 python 脚本。在 python 脚本中,您可以使用:
import sys
sys.argv #sys.argv[1] is the file to upload
这会获取传入的所有参数,因此
sys.argv[1]
应该会为您获取传入的文件。我测试了它并且它有效。您需要 .cmd 文件而不是直接转到 .py 的原因是因为 .py 文件不会显示在“发送到”菜单中。
获取传入文件的更多信息在这里:
在 Python 中接受文件参数(从发送到上下文菜单)
编辑:添加用于调用多个文件的脚本。请注意,这会在每个单独的文件上调用 python 脚本,如果您想将所有文件作为参数发送到 python 脚本,那么您需要做更多的工作。如果你想做更高级的事情,你需要研究批处理脚本。
@echo off
cls
:upload_loop
IF "%1"=="" GOTO completed
python C:\Your\File\uploadscript.py %1
SHIFT
GOTO upload_loop
:completed
而不是
%1
使用%*
。
%1
将传递第一个参数,%*
将传递所有参数(%n
将传递第 n 个...)
@echo off
cls
python C:\Your\File\uploadscript.py %*
请注意,命令行已内置字符限制XP 及之前版本为 2047,Windows 7 及更高版本为 8191
要将python脚本等添加到右键单击上下文菜单中,也可以在
中添加注册键(regedit)\HKEY_CLASSES_ROOT\Directory\Background\shell
在那里,添加一个容器,将其命名为您想要在上下文菜单中显示的字符串。在其中,添加一个 REG_SZ 类型的键,其中包含例如 python 脚本启动器
C:\Python27\python.exe "C:\path\to\your\script\yourscript.py"
我不知道如何使用上述解决方案将多个文件选择纳入 sys.argv,但我认为这也值得一提。
此网页添加 Windows 上下文菜单操作 有一个很好的 python 脚本,它将注册一个上下文菜单以将文件路径传递给您的 python 脚本。我没有尝试过,但将此示例修改为您需要执行的操作看起来很容易。另外,这种方式比我猜的 sendTo 解决方案少点击一次。
作为当前的初级程序员,这些答案都没有帮助。 我问了一个朋友,他帮了我。
这是我的解决方案:
在regedit中创建一个快捷方式:
它应该是这样的:"C:\Python older ile.py" "%1" (是的,它适用于 python 文件,但你也可以使用 cmd 文件)
(我们有一个错误,所以他在我当前的推荐文件中稍微更改了它,它看起来像这样: C:\Users\UserName\AppData\Local\Programs\Python\Python38\python.exe "C:\Python older ile.py" "%1"
我不能告诉你的原因,但它有效:D)
对于 python 文件,我使用了以下内容:
import sys
sys.argv[1]
print("It worked",sys.argv[1])
while True:
v=1
这样,您就拥有了拥有快捷方式和导入路径所需的一切。
除了前面的答案,也可以使用SendTo文件夹中的python脚本。
这允许:
try... except
块,以防您的图书馆已移动或发生诸如此类的事情;for
循环。例子:
import sys
try:
import foo
except ImportError as exc:
print("cannot start!", exc)
input("press Enter to close")
sys.exit()
try:
foo.main(sys.argv[1:])
except Exception as exc:
print(f"Unexpected error! {exc}")
input("press Enter to close")
sys.exit()
input("press Enter to close")
我建议这个脚本保持最小,并且只提供构建良好的 Python 包的启动,具有版本控制和经典开发方法。
#第一步 #创建python文件名test.py 导入系统 打印(sys.argv) 输入('退出!')
#步骤 2 test.py 到 test.exe
#步骤 3 """ 选择任何文件并单击打开方式并选择您的(test.exe) 现在看看打印出来的清单你就明白了!
"""