2017-08-31 2 views
0

私はChで作業しています。 8 "Pythonで退屈なものを自動化する"の中で、Multiclipboardプロジェクトを拡張しようとしています。私は私のパスにこのプログラムを追加したと私は現在で働いていますどんなディレクトリからそれを使用したい特定のディレクトリにあるPythonシェルブファイルを開くにはどうすればいいですか?

#! /usr/bin/env python3 

# mcb.pyw saves and loads pieces of text to the clipboard 
# Usage:  save <keyword> - Saves clipboard to keyword. 
#    <keyword> - Loads keyword to the clipboard. 
#    list - Loads all keywords to clipboard. 
#    delete <keyword> - Deletes keyword from shelve. 

import sys, shelve, pyperclip, os 

# open shelve file 
dbFile = os.path.join('Users', 'dustin', 'Documents', 'repos', 'python', 'mcbdb') 
shelfFile = shelve.open(dbFile) 


# Save clipboard content 
if len(sys.argv) == 3 and sys.argv[1].lower() == 'save': 
    shelfFile[sys.argv[2]]= pyperclip.paste() 

# Delete choosen content 
elif len(sys.argv) == 3 and sys.argv[1].lower() == 'delete': 
     if sys.argv[2] in list(shelfFile.keys()): 
      del shelfFile[sys.argv[2]] 
      print('"' + sys.argv[2] + '" has been deleted.') 
     else: 
      print('"' + sys.argv[2] + '" not found.') 
elif len(sys.argv) == 2: 
    # List keywords 
    if sys.argv[1].lower() == 'list': 
     print('\nAvailable keywords:\n') 
     keywords = list(shelfFile.keys()) 
     for key in sorted(keywords): 
      print(key) 
    # Load content   
    elif sys.argv[1] in shelfFile: 
     pyperclip.copy(shelfFile[sys.argv[1]]) 
    else: 
     # Print usage error 
     print('Usage:\n1. save <keyword>\n2. <keyword>\n' + 
       '3. list\n4. delete <keyword>') 
     sys.exit() 

# close shelve file 
shelfFile.close() 

問題は)(shelve.openは、新しいファイルを作成することです。ここに私のコードです。現在の作業ディレクトリ。永続ディレクトリを1つ作成するにはどうすればよいですか?

+0

'dbFile'が開始されるため、絶対パスを使用しました。今は間違っているように見えます。なぜなら、これはあなたがどこから来ているのか、 'Users'で始まっているからです。実際には'/Users' –

答えて

0

あなた

dbFile = os.path.join('Users', 'dustin', 'Documents', 'repos', 'python', 'mcbdb') 

あなたは/Users/dustin/からそれを実行した場合ので、それはあなたが望むものはおそらくされていない/Users/dustin/Users/dustin/Documents/repos/python/mcbdbを指します'Users/dustin/Documents/repos/python/mcbdb'のようなものに変わります。

絶対パスを使用する場合、/またはX:\(OS依存)のいずれかをルートとするものは、その "特定のディレクトリ"を保持します。

私は、しかし何か他のものをお勧めします~os.path.expanduserを使用してユーザーのホームディレクトリを取得する可能性があります:

dbFile = os.path.expanduser('~/.mcbdb') 
関連する問題