Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用csv文件中的数据在txt文件中写入行_Python_Python 2.7_Csv - Fatal编程技术网

Python 如何使用csv文件中的数据在txt文件中写入行

Python 如何使用csv文件中的数据在txt文件中写入行,python,python-2.7,csv,Python,Python 2.7,Csv,如何告诉Python打开一个CSV文件,并将每行的所有列合并到一个新TXT文件中的新行中 解释: 我正试图从一个网站上下载一些会员资料,用于一个研究项目。为此,我想在一个TXT文件中列出所有URL URL类似于:website.com-name-country-title-id.html 我编写了一个脚本,为每个成员获取所有这些信息,并将它们保存在CSV文件的列(名称/国家/标题/id)中,如下所示: mark japan rookie married john swed

如何告诉Python打开一个CSV文件,并将每行的所有列合并到一个新TXT文件中的新行中

解释:

我正试图从一个网站上下载一些会员资料,用于一个研究项目。为此,我想在一个TXT文件中列出所有URL

URL类似于:website.com-name-country-title-id.html

我编写了一个脚本,为每个成员获取所有这些信息,并将它们保存在CSV文件的列(名称/国家/标题/id)中,如下所示:

mark    japan    rookie    married
john    sweden   expert    single
suzy    germany    rookie    married
etc...
现在,我想打开此CSV并编写一个TXT文件,其中包含以下行:

www.website.com/mark-japan-rookie-married.html
www.website.com/john-sweden-expert-single.html
www.website.com/suzy-germany-rookie-married.html
etc...
这是我到目前为止的代码。正如你可能会告诉我,我几乎不知道我在做什么,所以帮助将非常感谢

import csv
x = "http://website.com/"
y = ".html"

csvFile=csv.DictReader(open("NameCountryTitleId.csv")) #This file is stored on my computer
file = open("urls.txt", "wb")

for row in csvFile:
    strArgument=str(row['name'])+"-"+str(row['country'])+"-"+str(row['title'])+"-"+str(row['id'])
    try:
        file.write(x + strArgument + y)
    except:
        print(strArgument)

file.close()

运行此命令后,我没有收到任何错误消息,但TXT文件完全为空。

与其使用
读写器,不如使用常规读写器,以便更轻松地加入行:

import csv

url_format = "http://website.com/{}.html"
csv_file = 'NameCountryTitleId.csv'
urls_file = 'urls.txt'

with open(csv_file, 'rb') as infh, open(urls_file, 'w') as outfh:
    reader = csv.reader(infh)
    for row in reader:
        url = url_format.format('-'.join(row))
        outfh.write(url + '\n')
with
语句确保在代码完成时再次正确关闭文件

我所作的进一步修改:

  • 在Python2中,以二进制模式打开CSV文件,
    CSV
    模块本身处理行尾,因为正确引用的列数据中可以嵌入换行符
  • 常规文本文件仍应以文本模式打开
  • 在文件中写入行时,请记住添加换行符以描绘行
  • 使用字符串格式(
    str.format()
    )比使用字符串连接灵活得多
  • str.join()

这其实很简单,您正在处理字符串,但您打开要写入的文件是以字节模式打开的,因此每次写入失败时,它都会打印到屏幕上。尝试更改此行:

file = open("urls.txt", "wb")
为此:

file = open("urls.txt", "w")
编辑:
我的观点是正确的,但是我想指出,由于没有换行符或其他形式的分隔符,您打算以后如何使用URL?如果在每个URL之间添加换行符,它们将很容易恢复

代码中没有任何内容表明文件无法写入。也许它是在一个不同的地方写的,和你期望的不同?是的,你是对的,它是在一个不同的地方写的。但是你的方式更好,所以谢谢!在Python2中,唯一的区别是将换行符转换为平台本机行分隔符。OP甚至没有写新行,当然也不会引发例外。