在python中逐行读取文件时出错

时间:2014-11-30 18:18:18

标签: python for-loop

我有一个文本文件,其中包含以下内容

bash-4.1# cat filelist.txt
js/config/organization.js
js/config/account.js
protected/config/settings.php

下面是python脚本文件。此脚本将从上面的文本文件中读取文件,并将相同的文件上载到Azure blob。我可以使用for循环逐行读取文件。但是会显示\n行。所以,脚本失败了。有人可以告诉我如何阅读确切的行并替换它需要的地方吗?

bash-4.1# more blob_copy.py
#! /usr/bin/env python
import sys
import os

from azure.storage import BlobService
blob_service = BlobService()

for line in open('file2.txt','r').readlines():
    blob_service.put_block_blob_from_path('test', line, line)

当我尝试运行脚本时,出现以下错误。

bash-4.1# python blob_copy.py
Traceback (most recent call last):
  File "blob_copy.py", line 12, in <module>
    blob_service.put_block_blob_from_path('test', line, line)
OSError: [Errno 2] No such file or directory: 'js/wheelhouse/organization.js\n'

2 个答案:

答案 0 :(得分:0)

问题似乎是,当您读取行时,它们仍然包含终止换行符号(\n),文件名不会。解决方案是strip()行:

with open('file2.txt','r') as istr:
    for line in istr:
        line = line.strip()
        # Your code here...

答案 1 :(得分:0)

您可以这样做:

import sys, os
list = open('file2.txt','r').read().splitlines()
for i in list:
    print i

返回没有换行符的行(\ n)。