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
Python 实现链表实例代码
Apr 07 Python
Python实现抓取网页生成Excel文件的方法示例
Aug 05 Python
浅谈Django REST Framework限速
Dec 12 Python
Django中redis的使用方法(包括安装、配置、启动)
Feb 21 Python
对pandas通过索引提取dataframe的行方法详解
Feb 01 Python
对django后台admin下拉框进行过滤的实例
Jul 26 Python
Python使用matplotlib 模块scatter方法画散点图示例
Sep 27 Python
flask的orm框架SQLAlchemy查询实现解析
Dec 12 Python
python飞机大战pygame游戏背景设计详解
Dec 17 Python
Python文本处理简单易懂方法解析
Dec 19 Python
Python中的协程(Coroutine)操作模块(greenlet、gevent)
May 30 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中使用foreach和引用导致程序BUG的问题介绍
2012/09/05 PHP
了解PHP的返回引用和局部静态变量
2015/06/04 PHP
Javascript 学习书 推荐
2009/06/13 Javascript
基于jquery的表格排序
2010/09/11 Javascript
Jquery实现三层遍历删除功能代码
2013/04/23 Javascript
jquery中页面Ajax方法$.load的功能使用介绍
2014/10/20 Javascript
jquery简单实现幻灯片的方法
2015/08/03 Javascript
基于jQuery实现Ajax验证用户名是否存在实例
2016/03/30 Javascript
jQuery中animate的几种用法与注意事项
2016/12/12 Javascript
详解基于angular路由的requireJs按需加载js
2017/01/20 Javascript
vuejs绑定class和style样式
2017/04/11 Javascript
Vue.js实现一个todo-list的上移下移删除功能
2017/06/26 Javascript
vue一步步实现alert功能
2017/07/05 Javascript
vue2.0实现前端星星评分功能组件实例代码
2018/02/12 Javascript
微信小程序实现上传多个文件 超过10个
2020/03/30 Javascript
[01:11]回顾历届DOTA2国际邀请赛中国区预选赛
2017/06/26 DOTA
[01:15:00]LGD vs Mineski Supermajor 胜者组 BO3 第一场 6.5
2018/06/06 DOTA
Python3读取文件常用方法实例分析
2015/05/22 Python
简单谈谈Python中的闭包
2016/11/30 Python
Python冲顶大会 快来答题!
2018/01/17 Python
python中plot实现即时数据动态显示方法
2018/06/22 Python
Python中文件的写入读取以及附加文字方法
2019/01/23 Python
Python virtualenv虚拟环境实现过程解析
2020/04/18 Python
Python使用grequests并发发送请求的示例
2020/11/05 Python
你的自行车健身专家:FaFit24
2016/11/16 全球购物
Oracle快照(snapshot)
2015/03/13 面试题
什么是GWT的Entry Point
2013/08/16 面试题
宣传策划类求职信范文
2014/01/31 职场文书
护士优质服务演讲稿
2014/08/26 职场文书
2014年社区国庆节活动方案
2014/09/16 职场文书
读《推着妈妈去旅行》有感1500字
2019/10/15 职场文书
CocosCreator ScrollView优化系列之分帧加载
2021/04/14 Python
MySQL 表空间碎片的概念及相关问题解决
2021/05/07 MySQL
postman中form-data、x-www-form-urlencoded、raw、binary的区别介绍
2022/01/18 HTML / CSS
《乙女游戏世界对路人角色很不友好》OP主题曲无字幕动画MV公开
2022/04/05 日漫
Python+Matplotlib图像上指定坐标的位置添加文本标签与注释
2022/04/11 Python