Python:使用CSV解析(?)变量,然后将其输出到另一个文件

埃萨贝尔

我是服务器管理员。我不必进行大量脚本编写,但是a脚-它抬起了丑陋的头。

摘要:我有example.csv,如下所示;

Stan,Marsh,Stan Marsh,1001,899,smarsh,[email protected]
Eric,Cartman,Eric Cartman,1002,898,ecartman,[email protected]

现在。我正在尝试读取csv文件。然后,我想从每一行中获取值并将其放入这样的内容中;

dn: cn=$CN,ou=People,dc=domain,dc=com
cn: $CN
gidnumber: 20
givenname $FN
homedirectory /home/users/$USER
loginshell: /bin/sh
objectclass: inetOrgPerson
objectclass: posixAccount
objectclass: top
sn: $LN
uid: $USERNAME
telephoneNumber: $TELE
uidnumber: $UIDN
userpassword: {CRYPT}mrpoo
mail: $EMAIL

如您所见,我正在尝试制作一个LDIF文件,该文件允许我导入用户名,然后自动填写变量。

我似乎无法拼凑而成。

我也没有走太远。我学会了打印行,是的...!

import csv

with open('example.csv', 'rb') as f:
        reader = csv.reader(f)
        for row in reader:
                print row

我认为逻辑如下。

  • 导入.CSV。遍历行。
  • 将数据放入变量。
  • 将最终产品(打印?)输出到“ Output_File”中
  • 循环播放直到EOF?

任何帮助,将不胜感激。

AKX

像这样的东西应该工作。

CSV模块对于像您这样的文件来说是多余的。

我在这里使用的一些Python惯用法:

  • dict(zip(keys, values))-压缩键列表和值列表;dict功能(或dict.update)可以消化那些作为键-值对要添加到一个字典
  • 映射形式的字符串插值(%(foo)s)然后可以提取字典

defaults位在那里,因此字符串插值不会因丢失值而阻塞。适应您的需求。:)

if True:  # For testing -- use the other branch to read from a file
    # Declare some test content in a string...
    input_content = """
Stan,Marsh,Stan Marsh,1001,899,smarsh,[email protected]
Eric,Cartman,Eric Cartman,1002,898,ecartman,[email protected]
    """.strip()
    # And use the StringIO module to create a file-like object from it.
    from StringIO import StringIO
    input_file = StringIO(input_content)
else:
    # Or just open the file as normal. In a short script like this,
    # one doesn't need to worry about closing the file - that will happen
    # when the script ends.
    input_file = open('example.csv', 'rb')


# Declare the fields in the order they are in the file.
# zip() will use this later with the actual fields from the file
# to create a dict mapping.
fields = ('FN', 'LN', 'NAME', 'UIDN', 'GIDN', 'CN', 'EMAIL')  # Fields, in order

# Declare a template for the LDIF file. The %(...)s bits will be
# later interpolated with the dict mapping created for each input row.
template = u"""
dn: cn=%(CN)s,ou=People,dc=domain,dc=com
cn: %(CN)s
gidnumber: 20
givenname %(FN)s
homedirectory /home/users/%(USER)s
loginshell: /bin/sh
objectclass: inetOrgPerson
objectclass: posixAccount
objectclass: top
sn: %(LN)s
uid: %(USERNAME)s
telephoneNumber: %(TELE)s
uidnumber: %(UIDN)s
userpassword: {CRYPT}mrpoo
mail: %(EMAIL)s
"""

for line in input_file:
    # Create `vals` with some default values. These would be overwritten
    # if the CSV data (and of course the declared fields) contain them.
    vals = {"USER": "XXX", "TELE": "XXX", "USERNAME": "XXX"}

    # line.strip().split() will turn the string line,
    # for example 'foo,baz,bar\n' (trailing new line `strip`ped out)
    # into the list ['foo', 'baz', 'bar'].
    # zipping it with, say, ['LN', 'FN', 'EMAIL'] would yield
    # [('LN', 'foo'), ('FN', 'baz'), ('EMAIL', 'bar')] -- 
    # ie. a list of tuples with a key and a value.
    # This can be used by the `dict.update` function to replace and augment
    # the default values declared above.

    vals.update(zip(fields, line.strip().split(",")))

    # Finally, use the interpolation operator % to merge the template with the
    # values for this line and print it to standard output.

    print template % vals

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从文件中提取所有以某些顺序开头的行,然后将其输出到另一个文件

来自分类Dev

如何使用通配符过滤掉字符串,然后将其修改后输出到另一个文本文件中?

来自分类Dev

计算变量,并将其输出到另一个变量

来自分类Dev

在CSV文件中应用diff()函数,然后导出到另一个CSV文件

来自分类Dev

从csv文件读取特定的列,然后使用python写入另一个CSV

来自分类Dev

读取 .csv 的内容并使用 python 将其写入另一个 .csv 文件

来自分类Dev

Makefile处理一个目录中的所有文件,然后输出到另一个目录。

来自分类Dev

Makefile处理一个目录中的所有文件,然后输出到另一个目录。

来自分类Dev

在一个表中查找值并使用 join/awk 将其输出到另一个表中

来自分类Dev

将数据文件追加到CSV文件并输出到另一个CSV文件

来自分类Dev

Python从文件中提取数据并输出到另一个

来自分类Dev

区分两个大的 CSV 文件(每个 90GB)并输出到另一个 csv

来自分类Dev

如何将FLV编码为一个临时文件,然后使用FFMpeg将其输出到stdout?

来自分类Dev

在树枝模板中设置变量,然后将其与另一个变量一起使用

来自分类Dev

比较两个大的csv文件,然后用python编写另一个

来自分类Dev

筛选一个Excel文件并将结果输出到另一个Excel

来自分类Dev

从另一个文件添加项目,然后使用数组列表将其存储在另一个文件中

来自分类Dev

从另一个文件添加项目,然后使用数组列表将其存储在另一个文件中

来自分类Dev

使用一个awk输出到另一个awk命令

来自分类Dev

搜索 java 文件中的行并使用批处理脚本输出到另一个文件

来自分类Dev

python 比较两个文本文件,然后将输出打印到另一个文件

来自分类Dev

如何使用文件名从Google Spreasheet复制数据,然后将其粘贴到另一个文件中?

来自分类Dev

从多行文件复制特定文本,然后使用终端将其自动粘贴到另一个文件中

来自分类Dev

查找文件,然后使用-exec将其移动到另一个文件夹

来自分类Dev

如何专门从txt文件中选择列和行,然后使用python将其写到另一个txt文件中?

来自分类Dev

Windows批处理文件输出到另一个文件

来自分类Dev

从文件中提取整数并输出到另一个文件?

来自分类Dev

从文件中提取整数并输出到另一个文件?

来自分类Dev

比较同一CSV文件的多列,然后使用Python将结果返回到另一个CSV文件

Related 相关文章

  1. 1

    从文件中提取所有以某些顺序开头的行,然后将其输出到另一个文件

  2. 2

    如何使用通配符过滤掉字符串,然后将其修改后输出到另一个文本文件中?

  3. 3

    计算变量,并将其输出到另一个变量

  4. 4

    在CSV文件中应用diff()函数,然后导出到另一个CSV文件

  5. 5

    从csv文件读取特定的列,然后使用python写入另一个CSV

  6. 6

    读取 .csv 的内容并使用 python 将其写入另一个 .csv 文件

  7. 7

    Makefile处理一个目录中的所有文件,然后输出到另一个目录。

  8. 8

    Makefile处理一个目录中的所有文件,然后输出到另一个目录。

  9. 9

    在一个表中查找值并使用 join/awk 将其输出到另一个表中

  10. 10

    将数据文件追加到CSV文件并输出到另一个CSV文件

  11. 11

    Python从文件中提取数据并输出到另一个

  12. 12

    区分两个大的 CSV 文件(每个 90GB)并输出到另一个 csv

  13. 13

    如何将FLV编码为一个临时文件,然后使用FFMpeg将其输出到stdout?

  14. 14

    在树枝模板中设置变量,然后将其与另一个变量一起使用

  15. 15

    比较两个大的csv文件,然后用python编写另一个

  16. 16

    筛选一个Excel文件并将结果输出到另一个Excel

  17. 17

    从另一个文件添加项目,然后使用数组列表将其存储在另一个文件中

  18. 18

    从另一个文件添加项目,然后使用数组列表将其存储在另一个文件中

  19. 19

    使用一个awk输出到另一个awk命令

  20. 20

    搜索 java 文件中的行并使用批处理脚本输出到另一个文件

  21. 21

    python 比较两个文本文件,然后将输出打印到另一个文件

  22. 22

    如何使用文件名从Google Spreasheet复制数据,然后将其粘贴到另一个文件中?

  23. 23

    从多行文件复制特定文本,然后使用终端将其自动粘贴到另一个文件中

  24. 24

    查找文件,然后使用-exec将其移动到另一个文件夹

  25. 25

    如何专门从txt文件中选择列和行,然后使用python将其写到另一个txt文件中?

  26. 26

    Windows批处理文件输出到另一个文件

  27. 27

    从文件中提取整数并输出到另一个文件?

  28. 28

    从文件中提取整数并输出到另一个文件?

  29. 29

    比较同一CSV文件的多列,然后使用Python将结果返回到另一个CSV文件

热门标签

归档