亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
12下一頁
最近訪問板塊 發(fā)新帖
查看: 8831 | 回復(fù): 14
打印 上一主題 下一主題

請問:Python能不能動態(tài)建立變量? [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2006-10-10 16:40 |只看該作者 |倒序?yàn)g覽
假設(shè)自己定義了這樣的配置文件(info.conf):

  C_NAME=小明
  C_AGE=18
  ......

  我用Python程序循環(huán)讀取該文件的每一行,然后希望能依次動態(tài)建立以等號左邊命名的變量,值自然為右邊的值,在Perl中可以輕松做到,不知道Python可不可以?希望各位大俠給予指點(diǎn).

  還有一個問題,假設(shè)我把一個名為test.py的文件放到game文件夾下面的lib文件夾里,那么我在game文件夾又建立一個名為play.py的文件,問:在game/play.py文件中怎么調(diào)用game/lib/test.py中寫的自定義類?

  謝謝大家的指點(diǎn),小弟不勝感激!

論壇徽章:
0
2 [報告]
發(fā)表于 2006-10-11 00:27 |只看該作者
for line in vfile:
    eval(line)

首先確定game在你的import路徑里面,那么就用import lib.test就可以了

論壇徽章:
0
3 [報告]
發(fā)表于 2006-10-12 23:23 |只看該作者
原帖由 hsb857 于 2006-10-10 16:40 發(fā)表

假設(shè)自己定義了這樣的配置文件(info.conf):

  C_NAME=小明
  C_AGE=18
  ......

  我用Python程序循環(huán)讀取該文件的每一行,然后希望能依次動態(tài)建立以等號左邊命名的變量,值自然為右邊的值,在Perl中可以輕松做到,不知道Python可不可以?希望各位大俠給予指點(diǎn).

用ConfigParser模塊?梢詤⒖枷旅娴拇a,來自Python Cookbook 4.12一節(jié)。雖然復(fù)雜了一些。

  1. import ConfigParser import string
  2. _ConfigDefault = {
  3.     "database.dbms":            "mysql",
  4.     "database.name":            "",
  5.     "database.user":            "root",
  6.     "database.password":        "",
  7.     "database.host":            "127.0.0.1"
  8.     }
  9. def LoadConfig(file, config={}):
  10.     """
  11.     returns a dictionary with keys of the form
  12.     <section>.<option> and the corresponding values
  13.     """
  14.     config = config.copy(  )
  15.     cp = ConfigParser.ConfigParser(  )
  16.     cp.read(file)
  17.     for sec in cp.sections(  ):
  18.         name = string.lower(sec)
  19.         for opt in cp.options(sec):
  20.             config[name + "." + string.lower(opt)] = string.strip(
  21.                 cp.get(sec, opt))
  22.     return config
  23. if _ _name_ _=="_ _main_ _":
  24.     print LoadConfig("some.ini", _ConfigDefault)
復(fù)制代碼

原帖由 hsb857 于 2006-10-10 16:40 發(fā)表

  還有一個問題,假設(shè)我把一個名為test.py的文件放到game文件夾下面的lib文件夾里,那么我在game文件夾又建立一個名為play.py的文件,問:在game/play.py文件中怎么調(diào)用game/lib/test.py中寫的自定義類?

把lib目錄加到PYTHONPATH里

  1. import sys
  2. sys.path.insert(0, '/path/to/your/module')
復(fù)制代碼

論壇徽章:
0
4 [報告]
發(fā)表于 2006-10-13 00:35 |只看該作者

多謝啦!

小弟接觸Python時間不長,以前一直用Perl和PHP,以后還有問題的話請多多指教,謝謝了!

論壇徽章:
0
5 [報告]
發(fā)表于 2006-10-13 02:42 |只看該作者

回復(fù) 2樓 ttvast 的帖子

eval報錯

#ReadConf.py
import re#導(dǎo)入正則表達(dá)式模塊
conf_file_url='./Config/'#配置文件所在目錄

class ReadConf:
       
        def __init__(self,file_name):
                #初始化配置文件名變量
                self.conf_file_name=''
               
                #如果file_name值不為空則將其值賦給conf_file_name變量
                if not re.match("\s",file_name):
                        if not file_name.isalnum():
                                self.conf_file_name=file_name
                        else:
                                return 0
               
        def getConfFile(self):
                return self.conf_file_name
               
        def readConfText(self):
                try:
                        conf_file=open((conf_file_url+self.conf_file_name),"r")#打開設(shè)定的配置文件
                except IOError,err_msg:
                        print >> sys.stderr,'在打開',conf_file_name,'配置文件時出現(xiàn)IO異常,詳細(xì)信息:',err_msg,'.'
                        sys.exit(1)
               
                var_records=conf_file.readlines()#讀取配置文件所有行
               
                for var_record in var_records:
                        print var_record
                       
        def readConfVar(self):
                try:
                        conf_file=open((conf_file_url+self.conf_file_name),"r")
                except IOError,errmsg:
                        print >> sys.stderr,'在打開',conf_file_name,'配置文件時出現(xiàn)IO異常,詳細(xì)信息:',err_msg,'.'
                        sys.exit(1)
                       
                var_records=conf_file.readlines()#讀取配置文件所有行
               
                for var_record in var_records:
                        if not (re.match("#",var_record) or re.match("\n",var_record)):
                                var_record=var_record.split('=')
                                eval(var_record[0])=var_record[1]
                               
#TEST
#a=ReadConf('info.conf')
#a.readConfVar()
                       
#End
               
錯誤信息:
Traceback (most recent call last):
  File "test.py", line 10, in ?
    from ReadConf import ReadConf
  File "./ClassLib/ReadConf.py", line 45
    eval(var_record[0])=var_record[1]
SyntaxError: can't assign to function call

這出的什么問題,我感覺eval()好像只能做為求值,不過在JavaScript里面的確可以用來創(chuàng)建變量.

論壇徽章:
0
6 [報告]
發(fā)表于 2006-10-13 08:06 |只看該作者
eval(var_record)
忘記那個該死的split

論壇徽章:
0
7 [報告]
發(fā)表于 2006-10-13 11:17 |只看該作者
是這樣

論壇徽章:
0
8 [報告]
發(fā)表于 2006-10-13 13:10 |只看該作者
提個建議
conf_file_url+self.conf_file_name

改成用os.path.join(conf_file_url, self.conf_file_name)

論壇徽章:
0
9 [報告]
發(fā)表于 2006-10-13 19:03 |只看該作者
謝謝大家!

論壇徽章:
0
10 [報告]
發(fā)表于 2006-10-15 23:32 |只看該作者
好像還是不行,eval只能求出一個表達(dá)式的值吧。還有沒有其他辦法?
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP