【问题标题】:Read multiple files from Unix folder and extract key value pair using Python [duplicate]从 Unix 文件夹中读取多个文件并使用 Python 提取键值对 [重复]
【发布时间】:2021-08-20 19:34:34
【问题描述】:

从 Unix 目录中读取多个文件。我正在尝试读取存储在 Unix 文件夹中的多个文件,并在这段文本“input1”之后提取键值对。

每个文件都包含以下格式的数据:-

input1 = {'hostname' : 'host', 'port' : '22', 'basedn' : 'CN=Users', 'bindusername' : 'admin']

Need to read dict and extract Key Value pair and print in below format:
    
    Col1   Col2
    xyz   123
    abc   456
    def   756



path = '/home/var/testfile/'
basepath =os.path.dirname(path)
with os.scandir(basepath) as entries:
        for entry in entries:
            if entry.is_file():
               fn=entry.name
def f(fn):
     with open(fn) as f:
        for s in f:
            data = pd.DataFrame()
            key = []
            value = []
            for k, v in s.items():
                key.append(k)
                value.append(v)
            data["Col1"] = key
            data["Col2"] = value
            print(data)
            
Above script does wotk when for a single file , but when i loop to read all the files from the folder , it stucked . 

【问题讨论】:

  • 到目前为止你尝试了什么?
  • 您好,欢迎来到 SO。重要的是要证明您正在努力解决您的问题,通常是通过发布您的代码的格式化文本版本并突出显示您遇到的问题。如果你这样做,其他人会提供帮助。
  • 假设您发布的数据正是文件中的数据,最重要的是使用“单引号”。那么您将要open()您的文件@ 987654323@ 将内容转换为variable 然后ast.literal_eval()variable 给您一个python dict,您可以使用它来打印带有for 循环和variable_as_dict.items() 的键和值

标签: python python-3.x pandas dictionary tuples


【解决方案1】:

来试试这个?

import pandas as  pd
dic1={'xyz':'123' , 'abc':'456','def':'765'}
data = pd.DataFrame()
data['Col1']=[val for val,key in dic1.items()] #=== All keys in dic1
data['Col2']=[key for val,key in dic1.items()] #=== All Values in dic1
print(data)

打印:

  Col1 Col2
0  xyz  123
1  abc  456
2  def  765

【讨论】:

  • 感谢 sujay,当我尝试使用您的脚本读取文件时,它不起作用。您能否提一些建议 。我的文件包含以下数据:- input1 = {'hostname' : 'host', 'port' : '22', 'basedn' : 'CN=Users', 'bindusername' : 'admin']
  • 我的代码:- basepath = (r"C:\Users\test1") 以 os.scandir(basepath) 作为条目:用于条目中的条目:if entry.is_file(): fn=entry .name def f(fn): with open(fn) as f: for s in f: data = pd.DataFrame() key = [] value = [] for k, v in s.items(): key.append (k) value.append(v) data["Col1"] = key data["Col2"] = value print(data)
  • 使用pandas 打印字典实在是太过分了...
【解决方案2】:
import pandas as pd

dic = {'xyz':'123' , 'abc':'456','def':'765'}
data = pd.DataFrame()
key = []
value = []
for k, v in dic.items():
    key.append(k)
    value.append(v)
data["Col1"] = key
data["Col2"] = value
print(data)

【讨论】:

  • 谢谢阿伦!当我尝试使用您的脚本从文件中读取时,它不起作用。您能否提一些建议 。我的文件包含以下数据:- input1 = {'hostname' : 'host', 'port' : '22', 'basedn' : 'CN=Users', 'bindusername' : 'admin']
  • basepath = (r"C:\Users\test1") 以 os.scandir(basepath) 作为条目:对于条目中的条目:if entry.is_file(): fn=entry.name def f (fn): with open(fn) as f: for s in f: data = pd.DataFrame() key = [] value = [] for k, v in s.items(): key.append(k) value .append(v) data["Col1"] = key data["Col2"] = value print(data)
  • @Geek_Coder 用您的代码更新您的原始问题(使用代码格式化工具),
  • 使用pandas 打印字典实在是太过分了...
猜你喜欢
  • 2019-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-09
  • 1970-01-01
  • 2017-12-26
  • 2019-02-17
  • 2022-12-05
相关资源
最近更新 更多