【问题标题】:Convert CSV to txt file [powershell]将 CSV 转换为 txt 文件 [powershell]
【发布时间】:2019-07-05 16:30:09
【问题描述】:

我有一个编辑 CSV 并保存它的 powershell 脚本。然后我复制 CSV,但将其另存为 .txt

有人告诉我,从 filename.csv 重命名为 filename.txt 不是正确的方法(我认为它有效),但是还有另一种方法可以“正确”将 CSV 保存为 TXT 文件

这是我将 CSV 保存为 .TXT 的当前方式

$csv = 'C:\Users\xxx\Desktop\xxx Playground\CSV Edit\20190522-Name-Num-Location-hey-hey.csv'
$path = 'C:\Users\xxx\Desktop\xxx Playground\CSV Edit\'
$pathdone = 'C:\Users\xxx\Desktop\xxx Playground\CSV Edit\done'

$txtfile = $date + $lastname + "-" + $lastxxx + "-" + $lastnum + "-" + $lastxxxtwo + "-" + $lastloc + "-" + $newid + ".txt"

# Save txt file as new format

Copy-Item "$csv" -Destination "$path$txtfile"

提醒,我的方法确实有效并输出 .TXT ,但有没有不同的方法可以“正确”执行此操作而不重命名“复制项并将其保存为 txt”

$data = Import-Csv -Path $csv -Header 'Stuff','City','Number','InStock'    # or add whatever headers you like
# get the first column as array of values
$column1 = $data.Stuff
# rotate the array values
switch ($column1.Count) {
    1 { Write-Host "Nothing to do here. There is only one row of data.."; break}
    2 { 
        # swap the values
        $data[0].Stuff,$data[1].Stuff = $data[1].Stuff,$data[0].Stuff
        break
    }
    default {
        $newColumn1 = @($column1[-1]; $column1[0..($column1.Count -2)])
        # re-write the first column in the data
        for ($i = 0; $i -lt $newColumn1.Count; $i++) {
            $data[$i].Stuff = $newColumn1[$i]
        }
    }
}

【问题讨论】:

  • 那么,您的同事认为这不是“正确”或“正确”的原因是什么?我认为区分“文本文件”和“.txt 文件”也很重要。您可以获取 any 文件并给它一个 .txt 扩展名;扩展名是否准确地描述了内容是另一回事。否则,CSV 是一种基于文本的格式,因此根据定义,它是文本文件的子集,因此它本身就是文本。这与询问如何将.ps1.ini.css 文件保存为文本相同,仅举几个例子。
  • @bacon ,我们把这个 csv 文件重命名为 .txt ,现在我们把这个 .txt 加载到一个刮刀中。我的同事认为“&”和“撇号”没有被正确处理并导致错误。 (我们在 csv/txt 中有问号(两者)突然出现)他认为我的脚本将 csv 编辑并重命名为 .txt 导致了这种情况。现在我用我们编辑的 9 行创建了一个新的 CSV,我添加了(& 和撇号),看看它是否会导致错误(它没有)..他仍然相信这是因为重命名 .csv作为 .txt 而不是“另存为 .txt”
  • 听起来问题出在编辑 CSV 的脚本(问号表明文本编码不正确)或刮板本身,但您的同事将其归因于编辑后的 ​​CSV → 文本“转换”。您是否尝试过在编辑前后在 CSV 上运行差异,以确切了解发生了什么变化?如果您使用 PowerShell cmdlet 执行编辑,请注意它们会标准化其输出;例如,如果您运行"First, Second, Third`n1, 2, 3" | ConvertFrom-Csv | ConvertTo-Csv -NoTypeInformation,输出会被引用,但会丢失逗号后的空格。
  • 整个文本编码是他认为是脚本的原因,但是......我已经用 & 符号和 ' 符号测试了脚本,都没有引起问题,这些是唯一的特殊字符在我们编辑的 CSV 文件中。我什至用小样本行(9 行)进行测试,并且在脚本编辑它时没有任何问题。脚本唯一会打开 CSV,通过将第一列中的最后一项移动到最顶部来更改第一列。然后我保存 csv.. 并将其重命名为 .txt ...我将此部分添加到原始帖子中,以便您查看它是如何编辑的。

标签: powershell csv


【解决方案1】:

CSV 一个遵循格式约定的文本文件。扩展名只是告诉您期望什么,逗号分隔值。 原则上保存为txt没有什么问题。您不会丢失任何信息。从一开始就不太清楚它仍然只是一个带有逗号分隔值的文件。所以,请不要头疼:)

【讨论】:

  • 有没有办法使用 export-csv 将其保存为 .txt 文件?
  • 你想达到什么目的?您可以按原样使用每个文本编辑器打开它。该扩展程序更像是过去用于获取使用什么程序打开它的 Windows 的东西。
猜你喜欢
  • 1970-01-01
  • 2015-12-11
  • 2021-03-31
  • 2019-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-05
  • 2011-02-19
相关资源
最近更新 更多