溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

python 如何在右鍵菜單中加入復(fù)制目標(biāo)文件的有效存放路徑(單斜杠或者雙反斜杠)

發(fā)布時(shí)間:2021-03-10 15:46:39 來源:億速云 閱讀:199 作者:TREX 欄目:開發(fā)技術(shù)

本篇內(nèi)容介紹了“python 如何在右鍵菜單中加入復(fù)制目標(biāo)文件的有效存放路徑(單斜杠或者雙反斜杠)”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

在右鍵菜單中加入復(fù)制目標(biāo)文件的有效存放路徑(單斜杠或者雙反斜杠)

引言

由于win10電腦自帶的獲取文件路徑為雙引號(hào)括起來的單反斜杠,如下圖。

python 如何在右鍵菜單中加入復(fù)制目標(biāo)文件的有效存放路徑(單斜杠或者雙反斜杠)

"D:\sankey.html"

但是在很多程序里讀取文件的時(shí)候,文件路徑中的反斜杠是會(huì)作為反編譯的特殊符號(hào),所以無(wú)法直接讀取該路徑

例如在R語(yǔ)言中,讀取數(shù)據(jù)只能用斜杠"/",或者是雙反斜杠"\\"。

python 如何在右鍵菜單中加入復(fù)制目標(biāo)文件的有效存放路徑(單斜杠或者雙反斜杠)

每次在R里讀表都很麻煩,要不只能手輸,要不用系統(tǒng)自帶的路徑,然后一個(gè)一個(gè)加反斜杠。

像我這么懶的人,對(duì)于這種機(jī)械式的操作是忍無(wú)可忍的。
于是開啟了復(fù)制文件路徑的改造之路。

下圖為成品:

get_path_1會(huì)返回雙反斜杠"\\“的路徑,
get_path_2會(huì)返回單斜杠”/"的路徑

python 如何在右鍵菜單中加入復(fù)制目標(biāo)文件的有效存放路徑(單斜杠或者雙反斜杠)

1. 獲取指定文件路徑并復(fù)制到系統(tǒng)粘貼板的python代碼

代碼返回的是帶了雙引號(hào)的路徑,并且做了兩種類型的路徑,運(yùn)行完后直接將結(jié)果復(fù)制到了系統(tǒng)的粘貼板。

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: Irvinfaith@hotmail.com
"""
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測(cè)試運(yùn)行

這里把腳本保存為 “getpwd.py
然后打開cmd進(jìn)入文件存放路徑測(cè)試運(yùn)行

python 如何在右鍵菜單中加入復(fù)制目標(biāo)文件的有效存放路徑(單斜杠或者雙反斜杠)

第一個(gè)參數(shù)“path_2”為所要獲取的路徑的類型,即為單斜杠路徑,第二個(gè)參數(shù)即為所需獲取有效路徑的文件。
運(yùn)行后沒有任何報(bào)錯(cuò),說明該文件的有效路徑已經(jīng)復(fù)制到你的粘貼板了。

隨便找個(gè)地方按ctrl+v測(cè)試一下,粘貼出來的結(jié)果如下:

"D:/sankey.html"

測(cè)試成功,開始改造右鍵菜單了。

3. 編輯.bat批處理文件及.reg注冊(cè)表文件

因?yàn)橛袃煞N路徑的類型,我是兩種都放進(jìn)了右鍵菜單中,

python 如何在右鍵菜單中加入復(fù)制目標(biāo)文件的有效存放路徑(單斜杠或者雙反斜杠)

所以需要兩份bat和reg文件,這里可以根據(jù)你的實(shí)際需要,根據(jù)你所需的路徑類型,輸入指定的參數(shù)保存文件就好了。
這里只展示其中一種參數(shù)為path_1作為示例,另外一個(gè)只是在bat文件中的執(zhí)行參數(shù)對(duì)應(yīng)改一下,reg文件中在右鍵菜單呈現(xiàn)的名字改一下,其他都一樣的。

3.1 .bat批處理文件

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

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

這里第一個(gè)參數(shù)D:\software\anaconda\python.exe是在系統(tǒng)中python的可執(zhí)行程序
第二個(gè)參數(shù)D:\getpwd.py為腳本路徑
第三個(gè)參數(shù)path_1即為所要返回的文件路徑類型的參數(shù)
注意后面還有百分號(hào)星號(hào)別漏了 %*

編輯完保存為“get_file_wd_path_1.bat

3.2 .reg注冊(cè)表文件

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文件的名稱
其他的都不動(dòng)照搬復(fù)制。

編輯完保存"get_file_wd_path_1.reg"

4. 運(yùn)行.reg文件,將信息添加進(jìn)注冊(cè)表

雙擊運(yùn)行剛保存的"get_file_wd_path_1.reg",點(diǎn)擊“是”

python 如何在右鍵菜單中加入復(fù)制目標(biāo)文件的有效存放路徑(單斜杠或者雙反斜杠)
python 如何在右鍵菜單中加入復(fù)制目標(biāo)文件的有效存放路徑(單斜杠或者雙反斜杠)

大功告成。

這時(shí)候隨便對(duì)準(zhǔn)一個(gè)文件點(diǎn)右鍵,會(huì)發(fā)現(xiàn)多了一個(gè)選項(xiàng),點(diǎn)擊后就能獲取到該文件的有效路徑了,直接粘貼到代碼中就可以了。

python 如何在右鍵菜單中加入復(fù)制目標(biāo)文件的有效存放路徑(單斜杠或者雙反斜杠)

注:點(diǎn)擊后會(huì)跳出python的運(yùn)行窗口,需等執(zhí)行窗口自動(dòng)關(guān)閉后,粘貼板上才有已復(fù)制好的路徑。

ps:python 添加絕對(duì)路徑時(shí)用反斜杠和正斜杠的區(qū)別

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

總結(jié)

“python 如何在右鍵菜單中加入復(fù)制目標(biāo)文件的有效存放路徑(單斜杠或者雙反斜杠)”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI