我想写一个python脚本,它会上传我在Windows资源管理器中选择的任何文件。我们的想法是在Windows资源管理器中选择任何文件,右键单击以显示文件的上下文菜单,然后从那里选择一个命令......例如“上传到Web服务器”。
选择该命令后,Python会运行一个脚本,该脚本接收文件路径和要上载的文件的文件名。编写将文件上传到web的Python脚本似乎很简单。目前还不清楚如何在Windows脚本菜单中为Python脚本创建实体。以及如何将文件路径和文件名传递给Python脚本来捕获....请指教!
答案 0 :(得分:22)
假设Windows 7,如果您打开一个文件夹并在地址栏中输入“shell:sendto”,然后按Enter键,您将进入上下文菜单。您可以添加.cmd文件,其中包含以下内容。
@echo off
cls
python C:\Your\File\uploadscript.py %1
这应该执行你的python脚本传入文件(%1)作为参数。在python脚本中,您可以使用:
import sys
sys.argv #sys.argv[1] is the file to upload
这会传入所有传入的参数,因此sys.argv[1]
应该为您提供传入的文件。我测试了它并且它可以工作。您需要.cmd文件而不是直接转到.py的原因是因为.py文件不会显示在“发送到”菜单中。
有关获取文件的更多信息,请访问:
Accepting File Argument in Python (from Send To context menu)
编辑:添加用于调用多个文件的脚本。注意这会在每个单独的文件上调用python脚本,如果你想将所有文件作为参数发送到python脚本,那么你需要做更多的工作。如果你想做更高级的事情,你需要研究批处理脚本。
@echo off
cls
:upload_loop
IF "%1"=="" GOTO completed
python C:\Your\File\uploadscript.py %1
SHIFT
GOTO upload_loop
:completed
答案 1 :(得分:3)
而不是%1
使用%*
。
%1
将传递第一个参数,%*
将传递所有(%n
将在第n个传递...)
@echo off
cls
python C:\Your\File\uploadscript.py %*
请注意,命令行已内置character limits 2047 for XP及之前版本,8191适用于Windows 7及更高版本
答案 2 :(得分:3)
要向右键单击上下文菜单添加python脚本等内容,也可以在
中添加注册码(regedit)\HKEY_CLASSES_ROOT\Directory\Background\shell
在那里,添加一个容器,将其命名为要在上下文菜单中显示的字符串。在其中,添加一个REG_SZ类型的键,其中包含例如
的python脚本启动器C:\Python27\python.exe "C:\path\to\your\script\yourscript.py"
我不知道如何使用前面提到的解决方案来获取多个文件选择到sys.argv,但我认为这也值得一提。
答案 3 :(得分:1)
这个网页Adding Windows context-menu actions有一个很好的python脚本,它将注册一个上下文菜单,将文件路径传递给你的python脚本。我没有尝试,但看起来很容易将此示例修改为您需要做的事情。另外,这种方式比我想的sendTo解决方案少一点。
答案 4 :(得分:0)
除了前面的答案,还可以在 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 包的启动,带有版本控制和经典的开发方法。