1. 程式人生 > 程式設計 >python 在右鍵選單中加入複製目標檔案的有效存放路徑(單斜槓或者雙反斜槓)

python 在右鍵選單中加入複製目標檔案的有效存放路徑(單斜槓或者雙反斜槓)

在右鍵選單中加入複製目標檔案的有效存放路徑(單斜槓或者雙反斜槓)

引言

由於win10電腦自帶的獲取檔案路徑為雙引號括起來的單反斜槓,如下圖。

在這裡插入圖片描述

"D:\sankey.html"

但是在很多程式裡讀取檔案的時候,檔案路徑中的反斜槓是會作為反編譯的特殊符號,所以無法直接讀取該路徑

例如在R語言中,讀取資料只能用斜槓"/",或者是雙反斜槓"\\"。

read_csv是readr包中的函式,read.csv是原生自帶的讀取檔案的函式,均會報錯

每次在R裡讀表都很麻煩,要不只能手輸,要不用系統自帶的路徑,然後一個一個加反斜槓。

像我這麼懶的人,對於這種機械式的操作是忍無可忍的。
於是開啟了複製檔案路徑的改造之路。

下圖為成品:

get_path_1會返回雙反斜槓"\\“的路徑,
get_path_2會返回單斜槓”/"的路徑

在這裡插入圖片描述

1. 獲取指定檔案路徑並複製到系統貼上板的python程式碼

程式碼返回的是帶了雙引號的路徑,並且做了兩種型別的路徑,執行完後直接將結果複製到了系統的貼上板。

pwd_1返回的是雙反斜槓路徑:
"D:\\files\\data.csv"

pwd_2返回的是單斜槓路徑:
"D:/files/data.csv"

# -*- coding: utf-8 -*-
"""
Created on Fri Sep 27 10:18:43 2019
author: Irvinfaith
email: [email protected]
"""
import sys
import subprocess
class get_pwd():
 """
 Main class to pass a path of target file to console.
 """
 def __init__(self,path):
 self.path = path
 def pwd_1(self):
 """
 Return path splits with double backslash.
 """
 path_1 = self.path.replace('\\','\\\\')
 return self.copy_to_clipboard(path_1)
 def pwd_2(self):
 """
 Return path splits with slash.
 """
 path_2 = self.path.replace('\\','/')
 return self.copy_to_clipboard(path_2)
 def copy_to_clipboard(self,txt):
 """
 Copy path and add double quote into clipboard.
 """
 cmd = 'echo "' + txt.strip() + '"|clip'
 return subprocess.check_call(cmd,shell=True)
if __name__ == '__main__':
 gp = get_pwd(sys.argv[2])
 if sys.argv[1] == 'path_1':
 gp.pwd_1()
 elif sys.argv[1] == 'path_2':
 gp.pwd_2()
 else:
 pass

2. 儲存指令碼並在terminal測試執行

這裡把指令碼儲存為 “getpwd.py
然後開啟cmd進入檔案存放路徑測試執行

在這裡插入圖片描述

第一個引數“path_2”為所要獲取的路徑的型別,即為單斜槓路徑,第二個引數即為所需獲取有效路徑的檔案。
執行後沒有任何報錯,說明該檔案的有效路徑已經複製到你的貼上板了。

隨便找個地方按ctrl+v測試一下,粘貼出來的結果如下:

"D:/sankey.html"

測試成功,開始改造右鍵選單了。

3. 編輯.bat批處理檔案及.reg登錄檔檔案

因為有兩種路徑的型別,我是兩種都放進了右鍵選單中,

在這裡插入圖片描述

所以需要兩份bat和reg檔案,這裡可以根據你的實際需要,根據你所需的路徑型別,輸入指定的引數儲存檔案就好了。

這裡只展示其中一種引數為path_1作為示例,另外一個只是在bat檔案中的執行引數對應改一下,reg檔案中在右鍵選單呈現的名字改一下,其他都一樣的。

3.1 .bat批處理檔案

C:\Windows目錄中,新建空白檔案輸入如下:

D:\software\anaconda\python.exe D:\getpwd.py path_1 %*

這裡第一個引數D:\software\anaconda\python.exe是在系統中python的可執行程式
第二個引數D:\getpwd.py為指令碼路徑
第三個引數path_1即為所要返回的檔案路徑型別的引數
注意後面還有百分號星號別漏了 %*

編輯完儲存為“get_file_wd_path_1.bat

3.2 .reg登錄檔檔案

C:\Windows目錄中,新建空白檔案輸入如下:

Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell\get_path_1\command]
@="get_file_wd_path_1.bat \"%1\""

其中第二行的get_path_1為在右鍵選單中所展示的文字
第三行的"get_file_wd_path_1.bat"為.bat檔案的名稱
其他的都不動照搬複製。

編輯完儲存"get_file_wd_path_1.reg"

4. 執行.reg檔案,將資訊新增進登錄檔

雙擊執行剛儲存的"get_file_wd_path_1.reg",點選“是”

在這裡插入圖片描述
在這裡插入圖片描述

大功告成。

這時候隨便對準一個檔案點右鍵,會發現多了一個選項,點選後就能獲取到該檔案的有效路徑了,直接貼上到程式碼中就可以了。

在這裡插入圖片描述

注:點選後會跳出python的執行視窗,需等執行視窗自動關閉後,貼上板上才有已複製好的路徑。

ps:python 新增絕對路徑時用反斜槓和正斜槓的區別

#使用絕對路徑 雙反斜槓
with open('E:\\use\\data.txt') as file_object:
  contents = file_object.read()
  print(contents.rstrip())
  
#使用絕對路徑 正斜槓
with open('E:/use/data.txt') as file_object:
  contents = file_object.read()
  print(contents.rstrip())

總結

到此這篇關於python 在右鍵選單中加入複製目標檔案的有效存放路徑(單斜槓或者雙反斜槓)的文章就介紹到這了,更多相關python 右鍵選單存放路徑內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!