标题: [问题求助] PowerShell怎样把csv文件平均分成3份? [打印本页]
作者: 小白龙 时间: 2024-10-31 00:59 标题: PowerShell怎样把csv文件平均分成3份?
对chatgpt太失望了, 近百轮下来都搞不定一个平均分割的问题,
我有一个csv文件, 想把它平均分成三份,每份都要有标题头,GPT的代码执行后,每份中的标题头下面的第一行文本都是一样的,- # 设置输入文件路径
- $inputFilePath = "A.csv"
-
- # 读取 CSV 文件,使用默认编码(适合 GBK)
- $data = Import-Csv -Path $inputFilePath -Encoding Default
-
- # 获取标题头
- $header = $data[0] # 获取标题头
-
- # 获取数据部分
- $dataRows = $data[1..($data.Count - 1)] # 获取数据部分
-
- # 计算总行数
- $totalRows = $dataRows.Count
-
- # 动态分割行数
- $partSize = [math]::Ceiling($totalRows / 3)
-
- # 分割数据并导出到新的 CSV 文件
- for ($i = 0; $i -lt 3; $i++) {
- $startIndex = $i * $partSize
- if ($startIndex -ge $totalRows) { break } # 如果开始索引超出数据范围,退出循环
-
- # 计算结束索引,确保不超出数据范围
- $endIndex = [math]::Min($startIndex + $partSize - 1, $totalRows - 1)
-
- # 提取当前分割的数据
- $currentData = $dataRows[$startIndex..$endIndex]
-
- # 设置输出文件路径
- $outputFilePath = "A_part$i.csv"
-
- # 将标题头导出到新的 CSV 文件
- $header | Export-Csv -Path $outputFilePath -NoTypeInformation -Encoding Default
-
- # 将当前数据导出到同一文件,确保每个文件都包含独立数据
- $currentData | Export-Csv -Path $outputFilePath -NoTypeInformation -Encoding Default -Append
- }
复制代码
作者: Five66 时间: 2024-10-31 13:51
啊 ,平均分成3份 ,行数又不一定能整除 ,而且还涉及方向的问题 ,比如
有效行数为10行时 ,按3 ,3 ,4来分还是4 ,4 ,2来分??
有效行数为7行时 ,按2 ,2 ,3来分还是3 ,3 ,1来分??
总之可以试试参考下面的- $file='a.csv'
- $str=[string[]](gc $file)
- if($str.count -le 3){exit 1}
- $o=($str.count-1)%3
- if($o -eq 2){
- $n=$str.count/3
- $o=-1
- }else{
- $n=($str.count-1-$o)/3
- }
- $l=0;1..3|foreach{
- $startIndex=$l*$n+1
- $endIndex=$n*($l+1)
- if($_ -eq 3){$endIndex+=$o}
- echo "$startIndex ~ $endIndex split"
- #($str[($l*$s+1)..($s*($l+1))])
- ($str[0],$str[$startIndex..$endIndex])|set-content ($file+"_part$l.csv")
- $l++
- }
- cmd /c pause
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |