Python文件读取+Wri

2024-05-19 02:09:25 发布

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

我正在研究从自定义MSSQL CMS到MYSQL-Wordpress的数据库移植。我正在使用Python读取一个txt文件,其中有\t划定的列和每行一行。

我试图编写一个Python脚本来读取这个文件(fread),并[最终]创建一个带有insert语句的MYSSQL ready.sql文件。

我正在阅读的文件中有一行类似于:

1    John Smith    Developer  http://twiiter.com/johns   Chicago, IL

到目前为止我的Python脚本:

import sys

fwrite = open('d:/icm_db/wp_sql/wp.users.sql','w')

fread = open('d:/icm_db/users.txt','r')

for line in fread:
    print line;


fread.close()
fwrite.close()

我如何才能“内爆”每一行,以便我可以访问每一列,并在它做生意?

我需要在每一行中生成多个MYSQL insert语句。所以。。。每读一行,我会生成如下内容:

INSERT INTO `wp_users` (`ID`, `user_login`, `user_name`) 
VALUES (line[0], 'line[2]', 'line[3]');

Tags: 文件txt脚本dbsqllinemysqlicm
3条回答

知道列的确切数目有助于自文档化代码:

fwrite = open("d:/icm_db/wp_sql/wp.users.sql","w")

for line in open("d:/icm_db/users.txt"):
  name, title, login, location = line.strip().split("\t")

  # Double up on those single quotes to avoid nasty SQL!
  safe_name = name.replace("'","''")
  safe_login = name.replace("'","''")

  # ID field is primary key and will auto-increment
  fwrite.write( "INSERT INTO `wp_users` (`user_login`, `user_name`) " )
  fwrite.write( "VALUES ('%s','%s');\n" % (safe_name,safe_login) )

Python标准库中有一个用于CSV (comma separated value) file reading and writing的模块,可以让它在类似于您的tab分隔文件上工作。这项任务可能有点过分了。

尽管这很容易实现,但使用csv模块确实会变得更容易。

>>> import csv
>>> reader = csv.reader(open('C:/www/stackoverflow.txt'), delimiter='\t')
>>> for row in reader:
...     print row
...
['1', 'John Smith', 'Developer', 'http://twiiter.com/johns', 'Chicago, IL']
['2', 'John Doe', 'Developer', 'http://whatever.com', 'Tallahassee, FL']

另外,如前所述,在Python中不需要分号。试着戒掉这个习惯:)

相关问题 更多 >

    热门问题