使用Id映射.yaml文件和.txt文件

2024-10-04 03:24:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我是python新手。有谁能告诉我如何使用一个公共Id映射.yaml文件和.txt文件吗

在设置.yaml在

folders:
    input: /home/developer/xovis/alhokair_data/incoming   
    csv: /home/developer/alhokair_xovis/client_31_csv
    backup: /home/developer/xovis/alhokair_data/backup

client_id: 31

logging:
    log_file: /tmp/j2clog_31.log

sensors:
    -
        serial_number: "D8:80:39:D3:C6:3C"
        storecode: 105943
        chain_id: 1
        chain_name: Al Hokair
        site_id: 1
        site_name: Aldo
        zone_id: 2
        zone_name: Entrance - 2

在商店.txt在

^{pr2}$

使用YAML中的Storecode和.txt文件中的Storecode映射这个2文件

最终输出如下

STORE,TRAN_DATE,TRAN_TIME,SALE_AMOUNT,TRAN_COUNT,chain_id,chain_name,site_id,site_name,zone_id,zone_name
105943,20170719,090000,88.00,1,1,1,1,1,2,2
105943,20170719,100000,1060.00,6,1,1,1,1,2,2
105943,20170719,120000,498.00,2,1,1,1,1,2,2

Tags: 文件csvnametxtidzoneyamldeveloper
1条回答
网友
1楼 · 发布于 2024-10-04 03:24:13

解析涉及yaml的设置文件非常容易。在

>>> import yaml
>>> with open('settings.yaml') as settings_file:
...     settings = yaml.load(settings_file)
...     
>>> settings.keys()
dict_keys(['folders', 'logging', 'client_id', 'sensors'])

在本例中,您得到了一个字典,并且您对sensors感兴趣。这是一个列表;选择第一项。在

^{pr2}$

从字典中定义所需项的名称,然后选择这些项。在

>>> new_items = ['chain_id', 'chain_name','site_id','site_name','zone_id','zone_name']
>>> new_values = ','.join([str(settings['sensors'][0][_]) for _ in new_items])

现在旋转输入文件,将名称添加到第一行,将值添加到第二行和后续行。在

>>> with open('stores.txt') as stores:
...     line = stores.readline().strip()
...     print (line+','+''.join(new_items))
...     while True:
...         line = stores.readline().strip()
...         if not line:
...             break
...         print (line+','+new_values)
...         
STORE,TRAN_DATE,TRAN_TIME,SALE_AMOUNT,TRAN_COUNT,chain_idchain_namesite_idsite_namezone_idzone_name
105943,20170719,090000,88.00,1,1,Al Hokair,1,Aldo,2,Entrance - 2
105943,20170719,100000,1060.00,6,1,Al Hokair,1,Aldo,2,Entrance - 2
105943,20170719,120000,498.00,2,1,Al Hokair,1,Aldo,2,Entrance - 2

请注意,输出并不是您在问题中所声称的那样。在

相关问题 更多 >