我想要一个脚本,我可以将windows路径粘贴为参数,然后脚本将路径转换为unix路径并使用nautilus打开路径。
我希望能够按如下方式使用脚本:
mypythonscript.py \\thewindowspath\subpath\
脚本目前看起来像这样:
import sys, os
path = "nautilus smb:"+sys.argv[1]
path = path.replace("\\","/")
os.system(path)
我几乎工作:) 问题是我必须在论证中添加'像这样:
mypythonscript.py '\\thewindowspath\subpath\'
任何知道如何编写允许该参数的脚本的人都没有',......就像这样:
mypythonscript.py \\thewindowspath\subpath\
编辑:我想我必须补充一点,问题是没有'参数中的\被视为转义字符。该解决方案不一定必须是python脚本,但我希望(在Linux中)能够将windows路径作为参数粘贴到脚本中。
答案 0 :(得分:2)
除非您使用的是早期版本的Windows:“/ blah / whatever /”只适用于您的OP。
答案 1 :(得分:0)
为避免在shell中处理转义,您可以直接使用剪贴板:
import os
try:
from Tkinter import Tk
except ImportError:
from tkinter import Tk # py3k
# get path from clipboard
path = Tk().selection_get(selection='CLIPBOARD')
# convert path and open it
cmd = 'nautilus'
os.execlp(cmd, cmd, 'smb:' + path.replace('\\', '/'))
ntpath
,urlparse
,os.path
模块可能有助于更有力地处理路径。
答案 2 :(得分:0)
实际上我刚才有这样的东西,我制作了一个bash脚本来自动下载我复制到剪贴板的链接,在这里编辑它以使用你的程序(如果你不喜欢,你首先需要安装xclip
已经有了):
#!/bin/bash
old=""
new=""
old="$(xclip -out -selection c)"
while true
do
new="$(xclip -out -selection c)"
if [ "$new" != "$old" ]
then
old="$new"
echo Found: $new
mypythonscript.py $new
fi
sleep 1
done
exit 0
现在,无论何时将新内容复制到剪贴板中,您的Python脚本都将使用剪贴板中的任何参数执行。
答案 3 :(得分:0)
#!/usr/bin/python
#! python3
#! python2
# -*- coding: utf-8 -*-
"""win2ubu.py changes WINFILEPATH Printing UBUNTU_FILEPATH
Author: Joe Dorocak aka Joe Codeswell (JoeCodeswell.com)
Usage: win2ubu.py WINFILEPATH
Example: win2ubu.py "C:\\1d\ProgressiveWebAppPjs\\Polymer2.0Pjs\\PolymerRedux\\zetc\\polymer-redux-polymer-2"
prints /mnt/c/1d/ProgressiveWebAppPjs/Polymer2.0Pjs/PolymerRedux/zetc/polymer-redux-polymer-2
N.B. spaceless path needs quotes in BASH on Windows but NOT in Windows DOS prompt!
"""
import sys,os
def winPath2ubuPath(winpath):
# d,p = os.path.splitdrive(winpath) # NG only works on windows!
d,p = winpath.split(':')
ubupath = '/mnt/'+d.lower()+p.replace('\\','/')
print (ubupath)
return ubupath
NUM_ARGS = 1
def main():
args = sys.argv[1:]
if len(args) != NUM_ARGS or "-h" in args or "--help" in args:
print (__doc__)
sys.exit(2)
winPath2ubuPath(args[0])
if __name__ == '__main__':
main()
答案 4 :(得分:0)
为此而努力,导致posxpath,pathlib,absolutepath,os.path对我不起作用。
def format_path(any_path):
chars = []
for i in range(len(any_path)):
char = any_path[i]
if char == '\\':
chars.append('/')
else:
chars.append(char)
return ''.join(chars)
答案 5 :(得分:-1)
可能想尝试
my_argv_path = " ".join(sys.argv[1:])
作为将路径拆分为单独args的唯一原因是粘贴路径中的空格
(例如:C:\Program Files
最终会成为两个参数["c:\Program","Files"]
)