windows 在选定文件上运行Python脚本

l7mqbcuq  于 2023-04-22  发布在  Windows
关注(0)|答案(7)|浏览(171)

我想写一个python脚本,它可以上传我在Windows资源管理器中选择的任何文件。这个想法是在Windows资源管理器中选择任何文件,右键单击以显示文件的上下文菜单,然后从那里选择一个命令......类似于“上传到Web服务器”。
选择命令后,Python运行一个脚本,该脚本接收要上传的文件的文件路径和文件名。编写将文件上传到Web的Python脚本似乎很简单。不清楚的是如何在Windows上下文菜单中为Python脚本创建一个实体。以及如何将文件路径和文件名传递给Python脚本以捕获....请指教!

3phpmpom

3phpmpom1#

假设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
l3zydbqr

l3zydbqr2#

使用%*代替%1
%1将传递第一个参数,%*将传递所有参数(%n将传递第n个参数...)

@echo off
cls
python C:\Your\File\uploadscript.py %*

请注意,命令行内置了character limits 2047(适用于XP及更早版本)和8191(适用于Windows 7及更高版本

14ifxucb

14ifxucb3#

要想在右键菜单中添加Python脚本之类的东西,还可以在

\HKEY_CLASSES_ROOT\Directory\Background\shell

在那里,添加一个容器,将其命名为您希望出现在上下文菜单中的字符串。

C:\Python27\python.exe "C:\path\to\your\script\yourscript.py"

我不知道如何使用上述解决方案将多个文件选择导入sys.argv,但我认为这也值得在这里提及。

nbewdwxp

nbewdwxp4#

这个网页Adding Windows context-menu actions有一个很好的python脚本,它将注册一个上下文菜单,将文件路径传递给你的python脚本。我没有尝试过,但它看起来很容易修改这个例子,你需要做什么。另外,这种方式是一个点击比sendTo解决方案,我猜。

k10s72fa

k10s72fa5#

作为一个初学程序员,这些答案都没有帮助。我问了一个朋友,他帮了我。
以下是我的解决方案:
在注册表编辑器中创建快捷方式:
1.按Windows按钮+ R,在字段中键入“regedit”
1.选择需要放置文件的位置(我建议“HKEY_CURRENT_USER\AllFilesystemObjects\shell & HKEY_CURRENT_USER\AllFilesystemObjects\shellex”。就像您的快捷方式显示在文件,文件夹和程序上一样)
1.在该文件夹中创建新密钥
1.在新文件夹中创建一个新密钥,并将i称为“command”
1.在“命令”中,你现在把你需要执行的文件路径。在它的末尾,你放一个“%1”
它应该看起来像这样:“C:\Python\folder\file.py”“%1”(是的,它可以使用python文件,但您也可以使用cmd文件)
(We有一个错误,所以他改变了它有点对我目前的赞扬文件,它看起来像这样:C:\Users\UserName\AppData\Local\Programs\Python\Python38\python.exe“C:\Python\folder\file.py”“%1”
原因我不能告诉你,但它的工作原理:D)
对于python文件,我使用了以下代码:

import sys
sys.argv[1]
print("It worked",sys.argv[1])
while True:
v=1

有了这个,你就有了快捷方式和导入路径所需的一切。

doinxwow

doinxwow6#

除了前面的答案,还可以在SendTo文件夹中使用python脚本。
这允许:

  • 在import语句周围使用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包的启动,并提供版本控制和经典的开发方法。

9bfwbjaz

9bfwbjaz7#

#step 1
#create python file name   test.py 
#this is the contenet of test.py
import sys
print(sys.argv)
input('quit ! ')

#step 2 
#convert test.py   to test.exe

#step 3
"""
chose any file and click open with and chose your (test.exe) 
now look the list printed you will understand ! 

    """

相关问题