2016-05-20 5 views
4

Apple Mac OS XのPyQt4では、次のようにドラッグアンドドロップされたファイルにfile reference URLを取得します形式:OS Xファイル参照URLエイリアスからのパスを取得する(ファイル:///ファイル/ id = ...)

file:///.file/id=123456.78901 

これは、興味深いことに、有効なファイルURLではありません、あるいは少なくともそれは透過的に、ほとんどのアプリケーションでは解決しません - ファイルシステムには/.file/id=...ファイルはありません。

ちょうどシェルを使用して、このNSURLまたはファイル参照またはエイリアス(または呼び出されたもの)をファイルシステム上のファイルへの有効なパスに逆参照するにはどうすればよいですか?次のスクリプトを実行しますosascriptを使用することができます

答えて

1

一つ、OS Xがインストールされ、デフォルトで利用可能AppleScript通訳、:

osascript -e 'get posix path of posix file "file:///.file/id=123.456" -- kthxbai' 

プリント/Users/josh/Downloads/paste-10837081.py。この答えはPyObjCによって異なりますので、あなたはただ、シェル」と述べ

+0

私は同じ問題があります。あなたのPythonスクリプトでそれをどのように呼び出すのですか?私はosascriptがpythonパッケージだが、 "-e"のようなものはないと思う。 – BaldDude

+0

OK。出来た。私はosascript(...)を書く必要がありました。これは "-e"なしで動作します – BaldDude

+0

Python(例えばvirtualenv)は、適切なosascriptパッケージが不足している可能性があります。したがって、上記のシェルコマンドを[サブプロセス](https://docs.python.org/3/library/subprocess.html#subprocess.Popen)で実行する方が安全です。 –

0

同情:Foundation.NSURL.alloc().initWithString_(url).fileSystemRepresentation()
あなたは、参照URLから有効なパスを取得するためにURL.standardizedを使用することができスウィフトでfile:///.file/id=123456.78901
戻りb'/Users/dave/Desktop/testbox/dest'

0

を受け入れます。スウィフト4では、ドラッグアンドドロップされたファイルからファイル名を取得するために、次のような操作を行います。

let fileType = NSPasteboard.PasteboardType (kUTTypeFileURL as String) 

extension NSPasteboardItem { 
    func fileURL()->URL? { 
     if let refURL = self.string(forType: fileType) { 
      return URL (fileURLWithPath: refURL).standardized 
     } 
     return nil 
    } 
} 
関連する問題