การอ่านไฟล์ในหลาม

ฉันต้องอ่านไฟล์ดังนี้:

config = {
    'name': 'hello',
    'see?': 'world'
}

ใช้คีย์เหมือนชื่อและดู? แต่ฉันไม่ต้องการฮาร์ดโค้ดค่าในสคริปต์ และวิธีจัดการกับการซ้อนลึกมากขึ้นในกรณีนี้ ไฟล์อาจมีส่วนมากกว่านี้ ฉันจะรู้ได้อย่างไรว่า 'ชื่อ' อยู่ในส่วนใดในขณะรันไทม์


person Jagdev Singh    schedule 15.03.2011    source แหล่งที่มา
comment
ฉันไม่เข้าใจคำถามของคุณ. คุณช่วยยกตัวอย่างไฟล์ปรับแต่งและโครงสร้างข้อมูลที่คุณต้องการรับได้ไหม   -  person Björn Pollex    schedule 15.03.2011
comment
อ่านไฟล์ด้วยการกำหนดค่านี้หรือไม่ ค่าปรับแต่งนี้คืออะไร? คุณต้องการเปิดไฟล์ ไม่ใช่เรื่องใหญ่   -  person Mohammad Efazati    schedule 15.03.2011
comment
อาจซ้ำกัน: stackoverflow.com/questions/186916/   -  person Marijn van Vliet    schedule 15.03.2011
comment
หากคำตอบใดสามารถแก้ปัญหาของคุณได้ ให้ยอมรับโดยใช้เครื่องหมายถูกทางด้านซ้ายของคำตอบ   -  person Björn Pollex    schedule 15.03.2011


คำตอบ (4)


หากคุณเข้ารหัสโครงสร้างของคุณเป็นข้อมูล JSON ตามที่ฉันคิดว่าคุณต้องการและทำในตัวอย่าง คุณเพียงแค่ต้องเขียนและอ่านโครงสร้างในไฟล์ ตัวอย่างเช่น:

 import json 
 config = {
  'name': 'hello',
  'see?': 'world'
 }
 out = open('config.json','w')
 out.write(json.dumps(config))
 out.close() 

บันทึกไฟล์การกำหนดค่าแล้ว

 input = open('config.json','r')
 config = json.loads(input.read())
 input.close()
 print config

โหลดไฟล์การกำหนดค่าแล้ว

person Community    schedule 15.03.2011

ไฟล์นั้นดูเหมือนหลามที่ถูกต้อง หากคุณสามารถเปลี่ยนชื่อได้ file.py คุณสามารถใช้:

from file import config
print config['name']
print config['see?']

มิฉะนั้น ไฟล์อาจเป็น JSON ดู http://docs.python.org/library/json.html

person rjmunro    schedule 15.03.2011
comment
ฉันจะไปหา json แทนที่จะอ่านเป็น python ปลอดภัยกว่ามาก และจะทำให้เกิดข้อผิดพลาดที่สามารถตรวจจับได้ แทนที่จะล้มเหลวด้วยข้อผิดพลาดในการแยกวิเคราะห์ - person Phil H; 15.03.2011
comment
@Phil H: ตัวอย่างคือ Python การนำเข้า Python ด้วยพารามิเตอร์การกำหนดค่ามีความปลอดภัยอย่างสมบูรณ์และรายงานข้อผิดพลาดที่แก้ไขข้อบกพร่องได้อย่างสมบูรณ์ - person S.Lott; 15.03.2011

ดูเหมือนคุณต้องการไฟล์ปรับแต่งใช่ไหม? มีการกำหนดรูปแบบไว้แล้วหรือคุณกำลังสร้างมันขึ้นมา? หากคุณต้องการอ่านตัวเลือกจากไฟล์ก็จะมี:

http://docs.python.org/library/configparser.html

ซึ่งจัดการรูปแบบ INI หากคุณมีไฟล์ในรูปแบบด้านบนอยู่แล้ว คุณจะบอกได้ไหมว่าเป็นไฟล์รูปแบบ JSON ถ้าเป็นเช่นนั้นก็มีโมดูลสำหรับเรื่องนั้นด้วย

person SpliFF    schedule 15.03.2011

ดูเหมือนว่ารูปแบบการกำหนดค่าของคุณจะเป็น python หรือ JSON ที่ถูกต้อง ซึ่งมี parser ในตัวเป็น python ดู http://docs.python.org/library/json.html สำหรับข้อมูลเพิ่มเติม . หากคุณกำลังพยายามนำเข้าไฟล์หลามที่ถูกต้องเป็น config เพียงใช้ import

person orlp    schedule 15.03.2011