首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python 学习手册
Python Cookbook
Python 基础教程
Python Sites
PyPI - Python Package Index
http://www.simple-is-better.com/
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
华为云
V2EX  ›  Python

请教一个 Python 读取文件内容后操作 MySQL 的问题.

  •  
  •   kenshin912 · 2017-05-05 14:13:09 +08:00 · 1003 次点击
    这是一个创建于 564 天前的主题,其中的信息可能已经有所发展或是发生改变。

    内部有个管理服务器信息 , FTP 信息的页面 , 因为老板要求每半个月更新一次密码 , 所以自己写了 shell 脚本定期换 vsFTPD 的密码.

    但是页面上的密码也要更新 , 我想通过 Python 解决这个问题(不想挨个改哇) . - -!

    先上代码

    import pymysql
    
    # 刷新 vsFTPD 密码
    db_connect = pymysql.connect(host='192.168.0.xxx', port=3306, user='root', passwd='123456', db='mima',charset="utf8")
    request = db_connect.cursor()
    
    def process(username,password):
    	if username:
    		request.execute("SELECT * FROM `ftp_list` WHERE username='%s'" % (username))
    		result = request.fetchall()
    		if result:
    			request.execute("UPDATE `ftp_list` SET password='%s' WHERE username='%s'" % (password,username))
    			print ("用户"+username+"的密码已经更新!")
    		else:
    			print ("没找到"+username+"这个用户!")
    	else:
    		print ("缺少参数!")
    
    
    # u = "sara"
    # p = "123456"
    
    # process(u,p)
    
    f = open('1.txt','r').readlines()
    
    while f:
    	lines = f[:2]
    	f = f[2:]
    	user=str(lines[0])
    	pwd=str(lines[1])
    	process(user,pwd)
    

    那个 1.txt 的格式是:

    sara
    123456
    lily
    123456
    

    第一行是用户名, 第二行是密码.

    问题是 , 按照目前的代码 , 运行的结果总是提示找不到 xxx 这个用户.

    然而我注释掉从文件中读取帐号密码的这一段 , 直接赋值并用 process() 来处理则正常.

    比较小白 , Google 了半天也没什么头绪 , 跑来请教各位大佬了... 感谢.

    4 回复  |  直到 2017-05-05 15:10:29 +08:00
        1
    XYxe   2017-05-05 14:49:14 +08:00   ♥ 1
    uns = f[::2]
    pwds = f[1::2]
    for index in range(len(uns)):
    process(uns[index].strip(), pwds[index].strip())
        2
    kenshin912   2017-05-05 14:58:54 +08:00
    @XYxe
    感谢大佬赐教 , 完美解决.
    能请教一下我的问题在哪吗?
        3
    XYxe   2017-05-05 15:00:26 +08:00 via Android   ♥ 1
    @kenshin912 应该是没有去掉行尾的换行
        4
    kenshin912   2017-05-05 15:10:29 +08:00
    @XYxe
    难怪之前我在调试的时候看到有换行符,但是一直没想到是这个问题.
    感谢 , 明白了.
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   741 人在线   最高记录 3821   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.1 · 19ms · UTC 20:42 · PVG 04:42 · LAX 12:42 · JFK 15:42
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1