[python]请问怎么实现读取文件来填写字典,谢谢

syhhl123 2013-06-21 11:40:50
现在像做个快速启动工具,有个run.ini文件,里面内容写的如下:
qq = D:\Program Files (x86)\Tencent\QQ\QQProtect\Bin\QQProtect.exe
.....

现在想把qq作为key,等号后面的作为value,然后赋值给word字典。在OpenFile函数中该如何实现?

def OpenFile(self,evt):
global word
word = {}
f = open('run.ini',r)
word = #这边该怎么写
......
f.close()

def OnRun(self,evt):
if self.stringtext.GetValue() in word:
key = self.stringtext.GetValue()
os.startfile(word[key])
else:
print ('error key')
...全文
1574 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jakey_Ch 2013-07-25
  • 打赏
  • 举报
回复
ConfigObject蠻好用~
wopabe 2013-07-25
  • 打赏
  • 举报
回复
引用 1 楼 panghuhu250 的回复:

def openFile(f):
    return {k.strip():v.strip() for k, v in (l.split('=') for l in open(f))}
水平太高了 可惜我没看懂
DevinXie 2013-07-24
  • 打赏
  • 举报
回复
引用 1 楼 panghuhu250 的回复:

def openFile(f):
    return {k.strip():v.strip() for k, v in (l.split('=') for l in open(f))}
非常好啊。。。。。
syhhl123 2013-06-23
  • 打赏
  • 举报
回复
谢谢各位,我现在已经可以通过自定义的命令来启动程序,但是我还想把window自带的那些命令页用起来。 比如输入calc可以打开计算器。输入cmd打开dos 有什么函数来获取吗?
panghuhu250 2013-06-23
  • 打赏
  • 举报
回复
引用 6 楼 maniachhz 的回复:
莫非python3可以直接写open(f)?
python 2就可以(不知道从2.×开始的)。下面是python 2.7。

Python 2.7.3 (default, Jan  2 2013, 13:56:14) 
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> print [l[0] for l in open('/tmp/client.py')][:10]
['i', '\n', 's', '\n', 'w', '\n', 'p']
>>> 
panghuhu250 2013-06-22
  • 打赏
  • 举报
回复

def openFile(f):
    return {k.strip():v.strip() for k, v in (l.split('=') for l in open(f))}
ImN1 2013-06-22
  • 打赏
  • 举报
回复
不是有样东西叫做 configparser 么?
syhhl123 2013-06-22
  • 打赏
  • 举报
回复
for l in open(f)这样就能从文本中一次读取一行吗? (l.split('=') for l in open(f))这样写是什么意思?
syhhl123 2013-06-22
  • 打赏
  • 举报
回复
return {k.strip():v.strip() for k, v in (l.split('=') for l in open(f))} 这句写成这样是啥意思?
maniachhz 2013-06-22
  • 打赏
  • 举报
回复
引用 1 楼 panghuhu250 的回复:

def openFile(f):
    return {k.strip():v.strip() for k, v in (l.split('=') for l in open(f))}
好像写错了,应该是f.readlines(),莫非python3可以直接写open(f)?

def openFile(f):
    return {k.strip():v.strip() for k, v in (l.split('=') for l in f.readlines())}
其实如果要解释ini文件,有一个模块configparser, 会更方便.
panghuhu250 2013-06-22
  • 打赏
  • 举报
回复
引用 3 楼 syhhl123 的回复:
for l in open(f)这样就能从文本中一次读取一行吗? (l.split('=') for l in open(f))这样写是什么意思?
假如文件为: A = B C = D E = F (l.split('=') for l in open(f)) (大概)就相当于 [(A, B), (C, D), (E, F)] 参看list comprehension和generator。

37,720

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧