小编wie*_*rob的帖子

Python 2 CSV编写器在Windows上生成错误的行终止符

根据其文档,csv.writer默认情况下应使用'\ r \n'作为lineterminator.

import csv

with open("test.csv", "w") as f:
    writer = csv.writer(f)

    rows = [(0,1,2,3,4),
           (-0,-1,-2,-3,-4),
           ("a","b","c","d","e"),
           ("A","B","C","D","E")]           

    print writer.dialect.lineterminator.replace("\r", "\\r").replace("\n", "\\n")
    writer.writerows(rows)
    print writer.dialect.lineterminator.replace("\r", "\\r").replace("\n", "\\n")
Run Code Online (Sandbox Code Playgroud)

这打印

\r\n
\r\n
Run Code Online (Sandbox Code Playgroud)

正如所料.但是,创建的csv文件使用了行终止符'\ r \n\r \n'

0,1,2,3,4

0,-1,-2,-3,-4

a,b,c,d,e

A,B,C,D,E
Run Code Online (Sandbox Code Playgroud)

这是一个错误还是我使用csv.writer时出了什么问题?

Python版本:

在Win32上基于Python 2.6.2(r262:71600,2009年4月21日,15:05:37)[MSC v.1500 32位(英特尔)]的ActivePython 2.6.2.2(ActiveState Software Inc.)

在Windows Vista上

python windows csv line-endings python-2.x

43
推荐指数
3
解决办法
3万
查看次数

如何使用PowerShell将多个xls文件转换为csv?

我正在尝试使用以下powershell脚本将多个Excel文件(xls)转换为csv:

$excel = new-object -ComObject "Excel.Application"
$excel.DisplayAlerts=$True
$excel.Visible =$false
foreach ($file in get-childitem $src_dir) {
    $wb = $excel.Workbooks.Open($file.FullName)
    $wb.SaveAs($dst_dir + $file.Name + ".csv", 6)# 6 -> csv
    $wb.Close($True)
}
$excel.Quit()
[void][System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel)
Run Code Online (Sandbox Code Playgroud)

原则上这有效,例如我得到csv文件.但是,对于一些文件(每次运行不同),我得到一个例外:

Exception calling "SaveAs" with "2" argument(s): "Microsoft Office Excel cannot access the file 'C:\Users\...\AppData\Local\Temp'. ...
Run Code Online (Sandbox Code Playgroud)

另外,我收到一个消息框,询问我是否要将更改保存到源xls.

一旦我调用SaveAs,$ wb就会引用新文件.那么如何保存或放弃对源文件的更改?为什么这只发生在几个文件中?这个脚本还有其他问题吗?

更新

我将输入文件(大约200)任意划分(即不知道组的大小)为10组,并在自己的运行中处理每个组.这样做有点不方便.

提前致谢

csv excel powershell xls

7
推荐指数
1
解决办法
8113
查看次数

使用Python的optparse模块时如何遵守PEP 257文档字符串?

根据PEP 257,命令行脚本的docstring应该是它的用法消息.

脚本(独立程序)的docstring应该可用作其"用法"消息,当使用不正确或缺少的参数(或者可能使用"-h"选项,"help")调用脚本时打印.这样的docstring应记录脚本的功能和命令行语法,环境变量和文件.用法消息可以相当复杂(几个屏幕已满),并且应该足以让新用户正确使用该命令,以及对复杂用户的所有选项和参数的完整快速参考.

所以我的docstring看起来像这样:

<tool name> <copyright info>

Usage: <prog name> [options] [args]

some text explaining the usage...

Options:
  -h, --help  show this help message and exit
   ...

现在我想使用optparse模块.optparse生成"选项"部分和解释命令行语法的"用法":

from optparse import OptionParser

if __name__ == "__main__":
    parser = OptionParser()
    (options, args) = parser.parse_args() 
Run Code Online (Sandbox Code Playgroud)

因此,使用"-h"标志调用脚本将打印:

Usage: script.py [options]

Options:
    -h, --help  show this help message and exit

这可以修改如下:

parser = OptionParser(usage="Usage: %prog [options] [args]",
                      description="some text explaining the usage...")
Run Code Online (Sandbox Code Playgroud)

结果

Usage: script.py [options] [args]

some text explaining the …

python optparse

5
推荐指数
2
解决办法
1480
查看次数

标签 统计

csv ×2

python ×2

excel ×1

line-endings ×1

optparse ×1

powershell ×1

python-2.x ×1

windows ×1

xls ×1