python 在右键菜单中加入复制目标文件的有效存放路径(单斜杠或者双反斜杠)
作者:Irvinfaith 发布时间:2023-10-15 20:20:36
在右键菜单中加入复制目标文件的有效存放路径(单斜杠或者双反斜杠)
引言
由于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:\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的运行窗口,需等执行窗口自动关闭后,粘贴板上才有已复制好的路径。
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
猜你喜欢
- 以下效率,是奔腾 dual1.6G HZ,1G内存电脑,ie6.0下toggle()与slideToggle("fast"
- 我们在制作网页时,有时会遇到这样的情况:根据用户的选择,显示不同的内容。比如,制作一个登录网页,上面有
- 1.嵌入 IFrame(/assets/img/anchor.svg)]()](https://gradio.app/sharing-you
- Elasticsearch简介Elasticsearch 是一个开源的搜索引擎,建立在一个全文搜索引擎库 Apache Lucene&
- 前言:相比大家都听过自动化生产线、自动化办公等词汇,在没有人工干预的情况下,机器可以自己完成各项任务,这大大提升了工作效率。编程世界里有各种
- 该sql如下:Select /*+ parallel(src, 8) */ distinct src.systemn
- python数据与matlab互通SciPy有时候需要利用python进行科学计算,但需要Matlab进行交互式画图,因此需要掌握pytho
- 以前有过一篇类似的文章, 讲的比较简单只有三个插件而已, 所以这篇文章将全持续更新.jQuery UI 大名顶顶, 不用介绍, 它的各个控件
- 鉴于人手严重不足(当时算两个半人的资源),打消了逐个库手动去改的念头。当前的程序结构不允许搞革命的做法,只能搞搞改良,所以准备搞个自动化工具
- 如下所示:from urllib.parse import quoteimport stringurl = r'http://www
- 案例:爬取使用搜狗根据指定词条搜索到的页面数据(例如爬取词条为‘周杰伦'的页面数据)import urllib.request# 1
- 我们都一定对比过编程的轻松与简单性。虽然我们都确认php和perl是最容易学习和编程的语言,但我仍旧想知道,如果用php、asp、jsp以及
- 问题:这里只解决一个问题,到底什么是Access?设计一个数据库管理系统,用access在access里面设计好表,查询,然后再用vb做窗体
- 保存模型保存模型仅仅是为了测试的时候,只需要torch.save(model.state_dict, path)path 为保存的路径但是有
- Thrift 是一种接口描述语言和二进制通信协议。以前也没接触过,最近有个项目需要建立自动化测试,这个项目之间的微服务都是通过 Thrift
- 前段时间跟这suggest项目走,没想到这么一个小小的输入框居然会带来那么多的问题。首先来比较一下几个主流的搜索引擎的suggest效果。为
- 阅读上一篇教程:WEB2.0网页制作标准教程(7)CSS学习入门 CSS布局与传统表格(table)布局最大的区别在于:原来的定位都是采用表
- 本文实例讲述了python从sqlite读取并显示数据的方法。分享给大家供大家参考。具体实现方法如下:import cgi, os, sys
- 当使用MySQL做站点的时候,肯定会有不知道的错误发生,怎么记录呢?以下是具体解决方法:class.method //建立错误日志 func
- 本文用163邮箱进行了测试,python用的是3.8版本进行的测试1.设置邮箱,如下图所示2.设置过程如下图所示:设置完成后,添加如下代码: