python 在右键菜单中加入复制目标文件的有效存放路径(单斜杠或者双反斜杠)

作者:Irvinfaith 时间:2023-10-15 20:20:36 

在右键菜单中加入复制目标文件的有效存放路径(单斜杠或者双反斜杠)

引言

由于win10电脑自带的获取文件路径为双引号括起来的单反斜杠,如下图。

python 在右键菜单中加入复制目标文件的有效存放路径(单斜杠或者双反斜杠)

"D:\sankey.html"

但是在很多程序里读取文件的时候,文件路径中的反斜杠是会作为反编译的特殊符号,所以无法直接读取该路径

例如在R语言中,读取数据只能用斜杠"/",或者是双反斜杠"\\"。

python 在右键菜单中加入复制目标文件的有效存放路径(单斜杠或者双反斜杠)

每次在R里读表都很麻烦,要不只能手输,要不用系统自带的路径,然后一个一个加反斜杠。

像我这么懒的人,对于这种机械式的操作是忍无可忍的。
于是开启了复制文件路径的改造之路。

下图为成品:

get_path_1会返回双反斜杠"\\“的路径,
get_path_2会返回单斜杠”/"的路径

python 在右键菜单中加入复制目标文件的有效存放路径(单斜杠或者双反斜杠)

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: 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测试运行

这里把脚本保存为 “getpwd.py
然后打开cmd进入文件存放路径测试运行

python 在右键菜单中加入复制目标文件的有效存放路径(单斜杠或者双反斜杠)

第一个参数“path_2”为所要获取的路径的类型,即为单斜杠路径,第二个参数即为所需获取有效路径的文件。
运行后没有任何报错,说明该文件的有效路径已经复制到你的粘贴板了。

随便找个地方按ctrl+v测试一下,粘贴出来的结果如下:

"D:/sankey.html"

测试成功,开始改造右键菜单了。

3. 编辑.bat批处理文件及.reg注册表文件

因为有两种路径的类型,我是两种都放进了右键菜单中,

python 在右键菜单中加入复制目标文件的有效存放路径(单斜杠或者双反斜杠)

所以需要两份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 在右键菜单中加入复制目标文件的有效存放路径(单斜杠或者双反斜杠)
python 在右键菜单中加入复制目标文件的有效存放路径(单斜杠或者双反斜杠)

大功告成。

这时候随便对准一个文件点右键,会发现多了一个选项,点击后就能获取到该文件的有效路径了,直接粘贴到代码中就可以了。

python 在右键菜单中加入复制目标文件的有效存放路径(单斜杠或者双反斜杠)

注:点击后会跳出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())

来源:https://blog.csdn.net/weixin_41578567/article/details/105194866

标签:python,右键菜单,单斜杠,双反斜杠
0
投稿

猜你喜欢

  • python pipeline的用法及避坑点

    2022-05-11 08:35:00
  • 解析Go 中的 rune 类型

    2023-09-19 11:59:16
  • PHP PDOStatement::fetch讲解

    2023-06-04 20:06:02
  • Python中迭代器与生成器的用法

    2021-08-30 00:53:18
  • 一文带你了解Go语言中的指针和结构体

    2024-04-25 15:26:20
  • python2与python3中关于对NaN类型数据的判断和转换方法

    2022-07-19 00:24:03
  • Oracle9i取得建表和索引的DDL语句

    2024-01-16 22:18:31
  • python requests.post带head和body的实例

    2022-07-12 01:22:59
  • python输入一个水仙花数(三位数) 输出百位十位个位实例

    2022-12-09 12:39:58
  • MySQL 管理

    2024-01-13 14:42:43
  • javascript定时变换图片实例代码

    2024-04-17 10:24:14
  • python样条插值的实现代码

    2022-05-11 16:04:05
  • python 实现批量替换文本中的某部分内容

    2021-05-19 18:06:42
  • v语言初体验小结

    2022-09-22 01:02:51
  • 按钮在 IE 中两边被拉伸的 BUG

    2008-11-17 20:37:00
  • Python如何实现SSH远程连接与文件传输

    2023-06-12 12:34:02
  • windows10更换mysql8.0.17详细教程

    2024-01-26 19:56:19
  • pygame实现贪吃蛇小游戏

    2023-04-18 19:09:07
  • 通过实例解析Python return运行原理

    2021-08-11 18:31:31
  • Django中URL的参数传递的实现

    2022-12-24 13:53:25
  • asp之家 网络编程 m.aspxhome.com