5

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パスを引数としてスクリプトに貼り付けることができるようにしたいです。

4

5 に答える 5

2

非常に初期のバージョンの Windows を使用していない限り、「/blah/whatever/」は OP で機能します。

于 2012-06-28T21:22:25.057 に答える
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スクリプトが実行されます。

于 2012-06-28T23:36:28.173 に答える
0

シェルでエスケープを処理しないようにするには、クリップボードを直接操作できます。

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('\\', '/'))

ntpathurlparseos.pathモジュールは、パスをより確実に処理するのに役立つ場合があります。

于 2012-06-28T22:01:32.957 に答える
-1

試してみたいかもしれません

my_argv_path = " ".join(sys.argv[1:])

パスを個別の引数に分割する唯一の理由は、貼り付けられたパスのスペースです

(例: C:\Program Files 2 つの引数になってしまいます ["c:\Program","Files"])

于 2012-06-28T21:36:13.107 に答える