原文链接:http://www.cnblogs.com/wdong/archive/2010/08/19/1802951.html

常年奋斗在编码一线的同学,应该都深有体会,工作久了,很多项目文件、技术资料,设计文档,安装包等等一堆一堆的工作目录分散在各个磁盘中,需要用到的时候,频繁的在各个目录中切换,每次都得用资源浏览器打开,还得点多次鼠标才能找到,或者有些如Apache或者tomcat等服务又需要用命令行启动,如果文件目录层次比较深的话,每次重复下列动作:

开发运行->cmd->c:\\Documents and Settings\\Administrator>D:
D:\>cd mycode
D:\>MyCode>cd python
D:\>MyCode>Python>Practise>...

反反复复的重复动作真的是太烦了,自己动手丰衣足食,还是用代码自己来写一段快速定位或切换工作目录的小工具,像工具软件一样点一下就直接打开,岂不是省去敲打那些无聊的cd命令,ok,因为已经凌晨了,突然来了兴致即兴发挥,实在搞不完,这一篇写把总体思路及几个关键的核心代码实现掉,下一篇完成所有功能

    总体思路:

    1.软件中可自定义常用工作目录或文件的配置项

    2.选择某一工作目录项可打开命令行,路径直接指向到指定的文件夹处

    3.选择某一工作目录项可打开资源浏览器,路径直接指向到指定的文件夹处

    4.选择某一文件项可直接打开执行

    5.使用python + Qt实现图形化操作界面(基于托盘图标)的工具软件

此篇实现前四个核心功能需求

1.使用python ConfigParser实现可配置项

代码:

 class ConfigItem(object):
2 def __init__(self,category,caption,path,icon,command, explorer, execute):
3 self.category = category
4 self.caption = caption
5 self.path = path
6 self.icon = icon
7 self.command = command
8 self.explorer = explorer
9 self.execute = execute
10
11 def readConfigItems(file,sect=None,key=None):
12 if not os.path.isfile(file):
13 raise Exception("FileNotFound")
14 cf = ConfigParser.ConfigParser()
15 cf.read(file)
16 sections = cf.items("sections")
17
18 if sect is None and key is None:
19 l = []
20 for name,key in sections:
21 i = ConfigItem(
22 category= cf.get(key,"category"),
23 caption=cf.get(key,"caption"),
24 path=cf.get(key,"path"),
25 icon=cf.get(key,"icon"),
26 command=cf.getboolean(key,"command"),
27 explorer=cf.getboolean(key,"explorer"),
28 execute=cf.getboolean(key,"execute")
29 )
30 l.append(i)
31 return l
32 return cf.get(sect,key)
33
34 def addConfigItem(file,item):
35 config = ConfigParser.RawConfigParser()
36 if not os.path.isfile(file):
37 raise Exception("FileNotFound")
38 config = ConfigParser.ConfigParser()
39 config.read(file)
40 sections = config.items("sections")
41 new_section = "section" + str(len(sections)+1)
42 config.set("sections",new_section,new_section)
43 config.add_section(new_section)
44 config.set(new_section, 'category', item.category)
45 config.set(new_section, 'caption', item.caption)
46 config.set(new_section, 'path', item.path)
47 config.set(new_section, 'icon', item.icon)
48 config.set(new_section, 'command',item.command)
49 config.set(new_section, 'explorer', item.explorer)
50 config.set(new_section, 'execute', item.execute)
51 # Writing our configuration file to 'example.cfg'
52 with open(file, 'wb') as configfile:
53 config.write(configfile)
54
55
56 if __name__ == "__main__":
57 #os.execvp(file)
58 #openCommand(r"D:\MyCode\Python\Pratices")
59 #openExplorer(r"D:\MyCode\Python\Pratices")
60 item = ConfigItem(
61 category= "3",
62 caption="test",
63 path=1,
64 icon=1,
65 command=True,
66 explorer=True,
67 execute=True
68 )
69 addConfigItem("d:\\conf.conf", item)
70 print readConfigItems("d:\\conf.conf")

配置文件格式:

[sections]
section2 = section2
section1 = section1 [section2]
category = 1
execute = False
explorer = True
caption = 工作目录
command = True
path = 1
icon = 1 [section1]
category = 工作目录
execute = True
explorer = True
caption = Python练习代码
command = True
path = 1
icon = 1

2.使用命令行、资源浏览器打开指定文件夹目录或直接执行可执行文件

# !/usr/bin/python
2 #-*-coding:utf-8-*-
3 """
4 author: "wdong"
5 date: @2010-8-18
6 summary:quick start your command file or explorer file or exec file
7 """
8
9 import os, time, datetime,sys
10 import ConfigParser
11
12 def openCommand(dest):
13 """
14 Specify the folder to opened by command line
15 """
16 cmd = "cmd /k cd \"" + dest + "\""
17 import subprocess
18 subprocess.Popen(cmd, shell=True)
19
20 def openExplorer(dest):
21 """
22 Specify the folder to opened by Explorer
23 """
24 cmd = "explorer \"" + dest + "\""
25 import subprocess
26 subprocess.Popen(cmd, shell=False)
27
28 def execFile(file):
29 """
30 execute the file by system register file type
31 """
32 if os.path.isfile(path):
33 try:
34 os.system(file)
35 except:
36 os.system("file:///" + str(file).replace("\\\\", "/"))
37 else:
38 openExplorer(file)

至此,核心功能调试完毕,明天接着做图形工具的实现,各位同行朋友,如果仔细读完,其实接下来的实现已经很简单了,有兴趣也可以自己做个界面玩玩,同时也希望高手们多多指点

我的Python工具-快速定位工作目录(二)

Python快速定位工作目录的更多相关文章

  1. python获得当前工作目录和修改

    import os  curDir = os.getcwd() 最近使用Python 写了很多脚本,想导入脚本,发现不知道如何查看python 的默认工作目录,并修改默认工作目录. 方法/步骤   查 ...

  2. Python 改变当前工作目录

    在shell里编辑: import os os.getcwd()   #取得当前工作目录 os.chdir(r'目标目录')   # os.chdir(r'd:\learnpy')

  3. Python改变当前工作目录

    import os print(os.getcwd()) # 打印当前工作目录 os.chdir('/Users/<username>/Desktop/') # 将当前工作目录改变为`/U ...

  4. python获取当前工作目录

    py文件所在位置/test/pj/hello.py 用户所在位置:/ 用户执行命令python /test/pj/hello.py 1. os.getcwd() 返回的是执行命令的位置 / 2.sys ...

  5. python中修改工作目录

  6. 第14.12节 Python中使用BeautifulSoup解析http报文:使用select方法快速定位内容

    一. 引言 在<第14.10节 Python中使用BeautifulSoup解析http报文:html标签相关属性的访问>和<第14.11节 Python中使用BeautifulSo ...

  7. 第14.11节 Python中使用BeautifulSoup解析http报文:使用查找方法快速定位内容

    一. 引言 在<第14.10节 Python中使用BeautifulSoup解析http报文:html标签相关属性的访问>介绍了BeautifulSoup对象的主要属性,通过这些属性可以访 ...

  8. 20180129周一之学习PYTHON笔记【安装、查看工作目录、】

    一,安装过程中多选一个ADD的项,免去设置环境变量. 二,PYAUTOGUI模块控制键鼠. IMAGE模块. ----------------------python 如何查看与更换工作目录----- ...

  9. 「Python调试器」,快速定位各种疑难杂症!!

    现在很多的编辑器其实都带着「调试程序」的功能,比如写 c/c++ 的 codeblocks,写 Python 的 pycharm,这种图形界面的使用和显示都相当友好,简单方便易学,这个不是我这篇文章要 ...

随机推荐

  1. eas之单据转换规则

    /**  * BOTP单据转换  * @param botpNum 转换规则编号  * @param BillInfo 原单据  */ public static void BOTP(String b ...

  2. css 陌生属性

    记录一些我之前没见过属性 1.width:100vh  100vh 2.min-height:calc(100vh + 51px);cale 3.:nth-child nth-child   和 :n ...

  3. 36.分页及deep paging

    主要知识点 1.es分页 2.deep paging     一.es分页语法 size,from 这两个关键字 GET /_search?size=10 指定每页10条数据 GET /_search ...

  4. PHP过滤html注释

    过滤html注释: 所谓过滤,不过是字符串的匹配与替换,这里我们用到的正则匹配替换函数preg_replace(reg,replace,string);,PHPer都清楚,这个函数的关键在于reg的精 ...

  5. vue中访问数据接口的配置

    业务API接口地址: http://localhost:3816/api/ 前端UI浏览地址:http://127.0.0.1:8080/#/home 由于同源策略的问题: 需要配置代理: 在开发环境 ...

  6. 12.IDEA中自动导资源包

    在idea工程中,当你赋值一个类文件的部分代码,粘贴到另一个文件中时,需要导入原来文件中的包资源, 自动设置如下

  7. 使用SQLAlchemy对博客文章进行分页

    https://blog.csdn.net/hyman_c/article/details/54382161

  8. Codeforces 1106F Lunar New Year and a Recursive Sequence (数学、线性代数、线性递推、数论、BSGS、扩展欧几里得算法)

    哎呀大水题..我写了一个多小时..好没救啊.. 数论板子X合一? 注意: 本文中变量名称区分大小写. 题意: 给一个\(n\)阶递推序列\(f_k=\prod^{n}_{i=1} f_{k-i}b_i ...

  9. 转载 - Pinyin4j的基本用法

    原文:http://blog.csdn.net/pathuang68/article/details/6692882 1.     简单介绍 有时候,需要将汉字编程对应的拼音,以方便数据的处理.比如在 ...

  10. 服务器监控(包括性能指标与web应用程序)

    http://blog.csdn.net/yao123long/article/details/53142029 http://blog.csdn.net/heyongluoyao8/article/ ...