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


Posted in Python onApril 08, 2020

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

引言

由于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())

总结

到此这篇关于python 在右键菜单中加入复制目标文件的有效存放路径(单斜杠或者双反斜杠)的文章就介绍到这了,更多相关python 右键菜单存放路径内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python函数嵌套实例
Sep 23 Python
CentOS安装pillow报错的解决方法
Jan 27 Python
Python 实现数据库更新脚本的生成方法
Jul 09 Python
python web.py开发httpserver解决跨域问题实例解析
Feb 12 Python
python实现自动发送报警监控邮件
Jun 21 Python
Numpy之文件存取的示例代码
Aug 03 Python
django+xadmin+djcelery实现后台管理定时任务
Aug 14 Python
Django实现学生管理系统
Feb 26 Python
Python实现最大子序和的方法示例
Jul 05 Python
Django实现文章详情页面跳转代码实例
Sep 16 Python
Python调用JavaScript代码的方法
Oct 27 Python
基于PyTorch中view的用法说明
Mar 03 Python
python将音频进行变速的操作方法
Apr 08 #Python
Python读取配置文件(config.ini)以及写入配置文件
Apr 08 #Python
Ubuntu18.04安装 PyCharm并使用 Anaconda 管理的Python环境
Apr 08 #Python
在python中修改.properties文件的操作
Apr 08 #Python
python3 配置logging日志类的操作
Apr 08 #Python
python3 logging日志封装实例
Apr 08 #Python
Django实现whoosh搜索引擎使用jieba分词
Apr 08 #Python
You might like
如何对PHP程序中的常见漏洞进行攻击(下)
2006/10/09 PHP
台湾中原大学php教程孙仲岳主讲
2008/01/07 PHP
本地机apache配置基于域名的虚拟主机详解
2013/08/10 PHP
php实现微信公众平台账号自定义菜单类
2015/10/11 PHP
PHP使用redis实现统计缓存mysql压力的方法
2015/11/14 PHP
PHP数字金额转换成中文大写显示
2019/01/05 PHP
在IE模态窗口中自由查看HTML源码的方法
2007/03/08 Javascript
JS获取页面input控件中所有text控件并追加样式属性
2013/02/25 Javascript
使用jQuery实现星级评分代码分享
2014/12/09 Javascript
原生js实现addClass,removeClass,hasClass方法
2016/04/27 Javascript
JavaScript的Ext JS框架中的GridPanel组件使用指南
2016/05/21 Javascript
Javascript中类式继承和原型式继承的实现方法和区别之处
2017/04/25 Javascript
Angular2安装angular-cli
2017/05/21 Javascript
利用js实现前后台传送Json的示例代码
2018/03/29 Javascript
webpack分离css单独打包的方法
2018/06/12 Javascript
详解angular分页插件tm.pagination二次触发问题解决方案
2018/07/20 Javascript
微信小程序onLaunch异步,首页onLoad先执行?
2018/09/20 Javascript
ES6 系列之 Generator 的自动执行的方法示例
2018/10/19 Javascript
详解vue项目打包步骤
2019/03/29 Javascript
vue-cli4.x创建企业级项目的方法步骤
2020/06/18 Javascript
vue实现自定义多选按钮
2020/07/16 Javascript
跟老齐学Python之做一个小游戏
2014/09/28 Python
python2.7 json 转换日期的处理的示例
2018/03/07 Python
python获取文件路径、文件名、后缀名的实例
2018/04/23 Python
python 读取文件并替换字段的实例
2018/07/12 Python
Django框架HttpResponse对象用法实例分析
2019/11/01 Python
Python输出指定字符串的方法
2020/02/06 Python
python如何调用java类
2020/07/05 Python
广告学专业推荐信范文
2013/11/23 职场文书
公共场所标语
2014/06/30 职场文书
党员违纪检讨书怎么写
2014/11/01 职场文书
2019银行员工个人工作自我鉴定
2019/06/27 职场文书
如何用JavaScript学习算法复杂度
2021/04/30 Javascript
Pytorch中Softmax和LogSoftmax的使用详解
2021/06/05 Python
nginx中封禁ip和允许内网ip访问的实现示例
2022/03/17 Servers
Redis实战之Lettuce的使用技巧详解
2022/12/24 Redis