python 遍历所有文件夹和子文件夹_用python遍历目录下文件(不包括子目录) | 求索阁...

#!/usr/bin/env python

#coding=gbk

__author__ = 'lc'

import MySQLdb

import glob

import os

import sys

DB_HOST = "localhost"

DB_USER = "root"

DB_PWD = "root"

DB_DATABASE = "database"

CHARVAR_PATH = "dir"

NOT_EXIST_FILE = "./not_exist_character.txt"

EXPORT_SQL_FILE = "./character_var.sql"

def check_arg():

if len(sys.argv) != 2:

print("参数不正确! 用法: convert_charvar.py 变量目录")

exit(1)

global CHARVAR_PATH

CHARVAR_PATH = sys.argv[1]

def convert_and_dump():

check_arg()

print("正在执行转换, 请稍候......")

try:

fp = None

cursor = None

sql_fp = open(EXPORT_SQL_FILE, "w")

not_exist_fp = open(NOT_EXIST_FILE, "w")

dbConn = MySQLdb.connect(DB_HOST, DB_USER, DB_PWD, DB_DATABASE)

cursor = dbConn.cursor()

for varFile in glob.glob(CHARVAR_PATH + os.sep + "*.txt"):

fileName = os.path.basename(varFile)

charName = fileName.rsplit(".txt")[0]

sql = "select id from tbl_character_info where name = '{}'".format(charName)

resNum = cursor.execute(sql)

if resNum == 0:

print("玩家 {} 在数据库角色表中查询不存在".format(charName))

not_exist_fp.write(charName + "\n")

continue

row = cursor.fetchone()

charid = row[0]

fp = open(varFile, "r")

varLst = fp.readlines()

fp.close()

for var in varLst:

oneLst = var.split("=")

if len(oneLst) != 2:

continue

name = oneLst[0].strip()

value = oneLst[1].strip(" \n\"")

INSERT_PREFIX = "insert into tbl_character_var (charid, name, value) values({}, '{}', '{}');    #角色名:{}"

sql = INSERT_PREFIX.format(charid, name, value, charName)

sql_fp.write(sql + "\n")

except Exception as exp:

print("严重错误: " + str(exp))

else:

print("执行完毕, sql语句保存在" + EXPORT_SQL_FILE + ", 不存在的玩家名保存在" + NOT_EXIST_FILE)

finally:

dbConn.close()

sql_fp.close()

not_exist_fp.close()

if cursor is not None:

cursor.close()

if fp is not None:

fp.close()

if __name__ == "__main__":

convert_and_dump()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值