python 在右键菜单中加入复制目标文件的有效存放路径(单斜杠或者双反斜杠)
在右键菜单中加入复制目标文件的有效存放路径(单斜杠或者双反斜杠)
引言
由于win10电脑自带的获取文件路径为双引号括起来的单反斜杠,如下图。
“D:sankey.html”
但是在很多程序里读取文件的时候,文件路径中的反斜杠是会作为反编译的特殊符号,所以无法直接读取该路径
例如在R语言中,读取数据只能用斜杠”/”,或者是双反斜杠”\”。
每次在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: 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进入文件存放路径测试运行
第一个参数“path_2”为所要获取的路径的类型,即为单斜杠路径,第二个参数即为所需获取有效路径的文件。 运行后没有任何报错,说明该文件的有效路径已经复制到你的粘贴板了。
随便找个地方按ctrl+v测试一下,粘贴出来的结果如下:
“D:/sankey.html”
测试成功,开始改造右键菜单了。
3. 编辑.bat批处理文件及.reg注册表文件
因为有两种路径的类型,我是两种都放进了右键菜单中,
所以需要两份bat和reg文件,这里可以根据你的实际需要,根据你所需的路径类型,输入指定的参数保存文件就好了。 这里只展示其中一种参数为path_1作为示例,另外一个只是在bat文件中的执行参数对应改一下,reg文件中在右键菜单呈现的名字改一下,其他都一样的。
3.1 .bat批处理文件
在C:Windows目录中,新建空白文件输入如下:
D:softwareanacondapython.exe D:getpwd.py path_1 %*
这里第一个参数D:softwareanacondapython.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*shellget_path_1command]
@="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:usedata.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 右键菜单存放路径内容请搜索ZaLou.Cn以前的文章或继续浏览下面的相关文章希望大家以后多多支持ZaLou.Cn!
- 13.1 设置更改root密码
- 12.23 open_basedir
- JDK容器学习之CopyOnWriteArrayList:线程安全保障机制
- JDK容器学习之LinkedList:底层存储&读写逻辑
- Linux基础(day53)
- 15.4 xshell使用xftp传输文件
- JDK容器学习之ArrayList:底层存储和动态扩容
- Linux基础(day57)
- 15.2/15.3 使用vsftpd搭建ftp
- JDK容器学习之Map: HashMap,TreeMap,LinkedHashMap对比小结
- 14.4 exportfs命令
- 不用那么多,每天一点点,学习React,贵在持之以恒
- Linux基础(day56)
- android classloader双亲委托模式
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Chrome DevTools 一些隐藏技巧
- Leetcode 1160. 拼写单词 (Hash)
- CodeForces 23B (图论 思维)
- JDBC 进阶操作
- Leetcode 面试题 01.06. 字符串压缩 (字符串模拟)
- Centos 7 安装 Git
- 受限平均生存时间(Restricted mean survival time)简析及R语言实现
- Leetcode 695. 岛屿的最大面积 (DFS)
- mskcc的vcf2maf极简解决方案代码分享
- 乘法逆元 线性递推阶乘求逆元、费马小定理、普适线性求逆元 欧拉定理结论
- 最新最全的varscan 软件找somatic mutation
- 【每周一库】- toml 一个toml文件解析库
- Rust FFI 编程 - bindgen 使用示例
- bug 回忆录(三)
- bug 回忆录(二)