V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
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
FX08
V2EX  ›  Python

想要逐行搜索 txt 里的全部内容,但是只 run 第一行就完成了

  •  
  •   FX08 · 2018-05-06 07:27:16 +08:00 · 3200 次点击
    这是一个创建于 2181 天前的主题,其中的信息可能已经有所发展或是发生改变。

    第一个很小的程序,困在这一步进行不下去了

    import os

    from selenium import webdriver

    #打开浏览器到百度

    ie_driver=os.path.abspath(r"C:\Program Files\Internet Explorer\IEDriverServer.exe")

    os.environ["webdriver.ie.IEDriverServer"]=ie_driver

    driver=webdriver.Ie(ie_driver)

    driver.get("https://www.baidu.com")

    #打开 txt f = open(r"D:\worki\hello\hello word.txt",'r')

    s=f.readline()

    #开始搜索 driver.find_element_by_id("kw").send_keys(s)

    driver.find_element_by_id("su").click()

    #找到内容

    try:

    driver.find_element_by_partial_link_text("大学")
    
    print (s+"分数可能不够,再看看别的吧")
    

    except Exception:

    print(s)
    
    CEBBCAT
        1
    CEBBCAT  
       2018-05-06 07:52:46 +08:00 via Android   ❤️ 1
    来,使用 Markdown 发文或 Gist 分享代码,现在的代码格式有点乱
    FX08
        2
    FX08  
    OP
       2018-05-06 08:04:11 +08:00
    @CEBBCAT #1

    这样会好一点吗?

    import os

    from selenium import webdriver

    #打开浏览器到百度

    ie_driver=os.path.abspath(r"C:\Program Files\Internet Explorer\IEDriverServer.exe")

    os.environ["webdriver.ie.IEDriverServer"]=ie_driver

    driver=webdriver.Ie(ie_driver)

    driver.get("https://www.baidu.com")

    #打开 txt



    f = open(r"D:\worki\hello\hello word.txt",'r')

    s=f.readline()



    #开始搜索

    driver.find_element_by_id("kw").send_keys(s)

    driver.find_element_by_id("su").click()

    #找到内容

    try:

    driver.find_element_by_partial_link_text("大学")

    print (s+"分数可能不够,再看看别的吧")
    except Exception:

    print(s)
    FX08
        3
    FX08  
    OP
       2018-05-06 08:11:17 +08:00
    import os
    from selenium import webdriver
    #打开浏览器到百度
    ie_driver=os.path.abspath(r"C:\Program Files\Internet Explorer\IEDriverServer.exe")
    os.environ["webdriver.ie.IEDriverServer"]=ie_driver
    driver=webdriver.Ie(ie_driver)
    driver.get("https://www.baidu.com")
    #打开 txt
    f = open(r"D:\worki\hello\hello word.txt",'r')
    s=f.readline()
    #开始搜索
    driver.find_element_by_id("kw").send_keys(s)
    driver.find_element_by_id("su").click()
    #找到内容
    try:
    driver.find_element_by_partial_link_text("大学")
    print (s+"分数可能不够,再看看别的吧")
    except Exception:
    print(s)
    laxenade
        4
    laxenade  
       2018-05-06 08:17:50 +08:00 via Android   ❤️ 1
    readline 本来也只会 read 一行
    FX08
        5
    FX08  
    OP
       2018-05-06 08:22:04 +08:00
    @laxenade
    想要把每一行都进行搜索,该怎么写呢 /头疼
    Blacate
        6
    Blacate  
       2018-05-06 08:27:15 +08:00 via Android   ❤️ 1
    FX08
        7
    FX08  
    OP
       2018-05-06 08:46:07 +08:00
    @Blacate
    万分感谢,现在的问题变成 如何把读取出来的行 赋值给 s,直接写 s=line 好像不行

    f = open(r"D:\worki\hello\keyword.txt")
    line=f.readline()
    while line:
    print (line,end="")
    line=f.readline()
    s=line
    jatsz
        8
    jatsz  
       2018-05-06 09:03:13 +08:00   ❤️ 1
    Python 代码靠缩进来隔开语义段,所以没有格式良好的代码很难阅读。按行一行一行读取文件可以使用:

    ```python
    with open(r'D:\worki\hello\hello word.txt') as fp:
    for line in fp:
    print line
    ```
    coordinate
        9
    coordinate  
       2018-05-06 09:06:07 +08:00   ❤️ 1
    @FX08 你似乎不知道 generator ? 了解一下。这是 python 里面的基础知识啊。
    jatsz
        10
    jatsz  
       2018-05-06 09:07:05 +08:00   ❤️ 1
    好像回复里不能用 markdown.

    with open(r'D:\worki\hello\hello word.txt') as fp:
    <Tab>for line in fp:
    <Tab><Tab>print line

    一个<Tab>表示一个缩进层次。
    FX08
        11
    FX08  
    OP
       2018-05-06 09:20:56 +08:00
    @jatsz 问题返回原点了,在下面 send keys 的时候,只能进行一次,我想要的是把 txt 里全部内容的搜索一遍
    FX08
        12
    FX08  
    OP
       2018-05-06 09:23:56 +08:00
    @jatsz generator 的确是个新名词,我来找找
    FX08
        13
    FX08  
    OP
       2018-05-06 10:00:50 +08:00
    @jatsz 实在是太感谢了,Python 代码靠缩进来隔开语义段,缩进这个词实在是太重要了
    FX08
        14
    FX08  
    OP
       2018-05-06 10:01:30 +08:00
    谢谢大家,问题已经解决
    Sylv
        15
    Sylv  
       2018-05-06 10:09:43 +08:00 via iPhone
    简单来说,你每次都是重新 open 文件来 readline() 一次,得到的当然只能是第一行。你要做的是,在 open 文件后,写个循环 readline() 读取整个文件的每一行。
    建议你先找本 Python 基础教程过一遍,先把基础编程知识掌握下。
    WizardMeow
        16
    WizardMeow  
       2018-05-06 11:51:58 +08:00 via Android
    for i in 文件,每次循环 i 就是一行
    crb912
        17
    crb912  
       2018-05-06 12:45:10 +08:00 via Android
    我基本都这么写
    f = open(r"D:\worki\hello\hello word.txt",'r')
    for line in f.readlines ():
    pass
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3558 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 10:46 · PVG 18:46 · LAX 03:46 · JFK 06:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.