我有一个. csv
文件。我想使用此文件创建文件。这是. csv
文件的格式。这是我的. csv
文件的一小部分。我的原始文件中还有60000多行。
Date,Pass,CutMark1,Marks1,CutMark2,Marks2,
22/06/2017 13:04:18,FALSE,TRUE,40,FALSE,35,
22/06/2017 13:04:20,FALSE,TRUE,35,FALSE,35,
22/06/2017 13:04:35,FALSE,TRUE,55,FALSE,55,
22/06/2017 13:04:37,FALSE,TRUE,100,FALSE,55,
22/06/2017 13:04:37,FALSE,TRUE,38,FALSE,55,
22/06/2017 13:04:38,FALSE,FALSE,35,FALSE,55,
22/06/2017 13:04:39,FALSE,FALSE,35,FALSE,38,
22/06/2017 13:04:40,FALSE,FALSE,35,TRUE,38,
22/06/2017 13:04:41,FALSE,FALSE,55,TRUE,38,
22/06/2017 13:04:42,FALSE,FALSE,55,TRUE,55,
22/06/2017 13:04:44,FALSE,FALSE,38,TRUE,55,
22/06/2017 13:04:45,TRUE,FALSE,38,TRUE,40,
22/06/2017 13:04:46,TRUE,FALSE,38,TRUE,40,
22/06/2017 13:04:48,TRUE,FALSE,55,FALSE,40,
22/06/2017 13:04:49,TRUE,FALSE,55,FALSE,25,
22/06/2017 13:04:50,TRUE,FALSE,55,FALSE,45,
22/06/2017 13:04:52,FALSE,TRUE,55,FALSE,60,
22/06/2017 13:04:53,FALSE,TRUE,40,FALSE,80,
22/06/2017 13:04:54,FALSE,TRUE,40,FALSE,80,
22/06/2017 13:04:56,FALSE,TRUE,40,FALSE,75,
22/06/2017 13:04:57,FALSE,TRUE,40,FALSE,90,
22/06/2017 13:04:58,FALSE,TRUE,55,FALSE,88,
22/06/2017 13:05:00,TRUE,TRUE,55,TRUE,23,
22/06/2017 13:05:01,TRUE,TRUE,55,TRUE,45,
22/06/2017 13:05:02,TRUE,TRUE,20,TRUE,78,
22/06/2017 13:05:04,TRUE,TRUE,45,TRUE,45,
22/06/2017 13:05:05,TRUE,TRUE,85,TRUE,69,
22/06/2017 13:05:06,TRUE,TRUE,62,TRUE,45,
22/06/2017 13:05:08,TRUE,TRUE,100,TRUE,35,
我想按如下方式保存这些文件。在这里“通过”列要检查。在False之后是False然后True,然后又是True等等,所以我想使用它来保存文件。例如,我想保存此文件首先将False值保存为False1.csv然后其次是True1.csv然后再次满足False2.csv我想在文件名中添加数字,即True或False在多少次中遇到。我希望行保存此. csv
文件中的所有其他列。
我用这个例子来解释,我想首先在不同的文件中保存所有假值和真值。我得到了这个例子。在这里,Pass列的前11行是“False”。因此,我想将这些(1-11)行保存在一个文件中,并应另存为False1。csv,然后满足pass“True”有行(12-16)应另存为True1。csv,则Pass值再次满足“False”,然后将这些行(17-22)保存为False2。csv再次满足传递列为“True”,则该行(23-29)另存为True2。csv,同样我想保存,我的中有60000个RAW。csv文件。
这是我读取
. csv
文件的代码。
using System.Globalization;
public static string dateFormatString = "dd/MM/yyyy HH:mm:ss";
private void btnSeperateFile_Click(object sender, EventArgs e)
{
if (tbOutputFilePath2 != null)
{
List<DrawNew> ObservingData = new List<DrawNew>(); // List to store all available DrawNew objects from the CSV
// Loops through each lines in the CSV
html" target="_blank">foreach (string line in System.IO.File.ReadAllLines(outputFilePath.Text).Skip(1)) // .Skip(1) is for skipping header
{
string[] valuesCsvLine = line.Split(',');
DrawNew mngInstance = new DrawNew();
mngInstance.Date = DateTime.ParseExact(valuesCsvLine[0], dateFormatString, CultureInfo.InvariantCulture);
mngInstance.Pass = (valuesCsvLine[1] == "TRUE" ? true : false);
mngInstance.CutMark1 = (valuesCsvLine[2] == "TRUE" ?true: false);
mngInstance.Marks1 = int.Parse(valuesCsvLine[3]);
mngInstance.CutMark2 = (valuesCsvLine[4] == "TRUE" ? true : false);
mngInstance.Marks2 = int.Parse(valuesCsvLine[5]);
ObserveData.Add(mngInstance);
}
}
}
这是存储
. csv
文件数据的类:
class DrawNew
{
public DateTime Date { get; set; } // property to store Date
public bool Pass { get; set; } // property to store Pass
public bool CutMark1 { get; set; } // property to store CutMark1
public int Marks1 { get; set; } // property to store Marks1
public bool CutMark2 { get; set; } // property to store CutMark2
public int Marks2 { get; set; } // property to store Marks2
}
可能不是最好的、最有效的,甚至不是最好的方式,但它可能会让你开始:
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
[...]
public void StoreSeparatedByPass(IEnumerable<DrawNew> observingData)
{
// keep the file numbers easily accessible
var fileCounts
= new Dictionary<bool, int>
{
{ false, 0 },
{ true, 0 }
};
bool? pass = null;
var lines = new List<DrawNew>();
foreach (var drawNew in observingData)
{
// to differentiate between "starting with false"
// and "starting with true".
// (only interesting on first item)
if (pass.HasValue == false)
{
pass = drawNew.Pass;
}
if (pass.Value != drawNew.Pass)
{
// the value of drawNew.Pass changed, the previous "part" has ended.
// now we need to do store the collected lines (if there are any)...
if (lines.Any())
{
fileCounts[pass.Value]++;
StoreLines(lines, pass.Value.ToString() + fileCounts[pass.Value] + ".csv");
// then clear the stored list for the next part...
lines.Clear();
}
// and change the part indicator.
pass = drawNew.Pass;
}
lines.Add(drawNew);
}
// don't forget to store the last part...
if (pass.HasValue && lines.Any())
{
fileCounts[pass.Value]++;
StoreLines(lines, pass.Value.ToString() + fileCounts[pass.Value] + ".csv");
}
}
public void StoreLines(IEnumerable<DrawNew> lines, string fileName)
{
// TODO: actually write the DrawNew items to the given filename
}
问题内容: 我有一个fstream my_file(“ test.txt”),但我不知道test.txt是否存在。如果存在,我也想知道是否也可以阅读。怎么做? 我使用Linux。 问题答案: 我可能会选择: 该方法检查流是否准备好从中读取。
我想确定C 11中是否存在一个文件 我有以下代码: 和 哪一个是正确的和惯用的?
问题内容: Go的标准库没有专门用于检查文件是否存在的函数(如Python的)。什么是 惯用的 方式做到这一点? 问题答案: 要检查文件是否不存在,等同于Python的文件: 要检查文件是否存在,等效于Python的文件: 编辑:根据最近的评论
问题内容: 在打开文件以Java读取之前,如何检查文件是否存在?(相当于Perl的)。 关于SO的唯一类似问题涉及写入文件,因此使用回答了该问题,这显然不适用于此处。 如果可能的话,我宁愿使用真正的API调用返回,而不是使用“调用API来打开文件并在引发异常时捕获并在文本中检查’无文件’的情况下捕获”,但是我可以接受后者。 问题答案: 使用:
Go的标准库没有专门用于检查文件是否存在的功能(如Python的)。