标签: text-files

在批处理文件中显示.txt文件中的文本

我正在编写一个大批处理文件.

它将日期记录到log.txt文件中:

@echo off
echo %date%, %time% >> log.txt
echo Current date/time is %date%, %time%.
@pause
exit
Run Code Online (Sandbox Code Playgroud)

它可以在几行上记录几次.现在我想要做的是批处理文件文件显示log.txt文件中最后记录的日期/时间.

怎么样?

text batch-file text-files

14
推荐指数
2
解决办法
10万
查看次数

如何相互捕获两个文件但分别省略最后一行?

我有两个文件想要一起玩.但是,应省略第一个文件的最后一行和最后一个文件的第一行.

我确信这可以在UNIX shell(或者更确切地说,Cygwin)中完成.但是怎么样?

bash line text-files

14
推荐指数
1
解决办法
1万
查看次数

如何动态识别数据文件中的未知分隔符?

我有三个输入数据文件.每个都使用不同的分隔符来包含其中的数据.数据文件一个如下所示:

apples | bananas | oranges | grapes

数据文件二看起来像这样:

quarter, dime, nickel, penny

数据文件三看起来像这样:

horse cow pig chicken goat

(列数的变化也是有意的)

我的想法是计算非字母字符的数量,并假设最高计数是分隔符.但是,具有非空格分隔符的文件在分隔符之前和之后也有空格,因此空格会在所有三个文件上获胜.这是我的代码:

def count_chars(s):
    valid_seps=[' ','|',',',';','\t']
    cnt = {}
    for c in s:
        if c in valid_seps: cnt[c] = cnt.get(c,0) + 1
    return cnt

infile = 'pipe.txt' #or 'comma.txt' or 'space.txt'
records = open(infile,'r').read()
print count_chars(records)
Run Code Online (Sandbox Code Playgroud)

它将打印一个字典,其中包含所有可接受字符的计数.在每种情况下,空间总是获胜,所以我不能依靠它来告诉我分隔符是什么.

但我想不出更好的方法来做到这一点.

有什么建议?

python csv parsing textinput text-files

14
推荐指数
2
解决办法
2万
查看次数

我可以在Vim中转置文件吗?

我知道我可以使用AWK,但我在Windows机器上.我正在为可能没有AWK的其他人提供功能.我也知道我可以写一个C程序,但我不想为我正在制作的一个小Vim实用程序创建维护和编译.

原始文件可能是

THE DAY WAS LONG 
THE WAY WAS FAST
Run Code Online (Sandbox Code Playgroud)

它会成为

TT
HH
EE

DW
AA
YY

WW
AA
SS

LF
OA
NS
GT
Run Code Online (Sandbox Code Playgroud)

更新:高尔夫规则适用于选择正确的答案.

更新:Python粉丝应该看看Duffy先生的答案如下.

python vim text-parsing text-files

13
推荐指数
3
解决办法
2861
查看次数

c ++:ifstream打开传递文本文件名字符串的问题

我正在尝试将字符串从main传递给另一个函数.此字符串是需要加密的文本文件的名称.据我所知,我正在传递字符串,但是当我尝试使用ifstream.open(textFileName)它时,它并没有完全奏效.但是当我手动硬编码时ifstream.open("foo.txt"),它工作得很好.我需要多次使用此函数,所以我希望能够传入一个文本文件名字符串..

这是我的主要内容

#ifndef DATA_H
#define DATA_H
#include "Data.h"
#endif

#ifndef DATAREADER_H
#define DATAREADER_H
#include "DataReader.h"
#endif

using namespace std;

int main()
{
 vector<Data*> database = DataReader("foo.txt");

 return 0; 
}
Run Code Online (Sandbox Code Playgroud)

DataReader的标头

#include <fstream>
#include <iostream>
#include <vector>
#include <string>

#ifndef DATA_H
#define DATA_H
#include "Data.h"
#endif

using namespace std;

vector<Data*> DataReader(string textFile);
Run Code Online (Sandbox Code Playgroud)

最后是DataReader.cpp

#include "DataReader.h"

using namespace std;

vector<Data*> DataReader(string textFile)
{
 ifstream aStream;     
 aStream.open(textFile); //line 11
Run Code Online (Sandbox Code Playgroud)

我查找了ifstream.open(),它接受一个字符串和一个模式作为参数.不确定如何处理这些模式,但我尝试了它们但是它们给出了相同的错误信息

DataReader.cpp: In function 'std::vector<Data*, std::allocator<Data*> > DataReader(std::string)':
DataReader.cpp:11: error: …
Run Code Online (Sandbox Code Playgroud)

c++ string parameters text-files

13
推荐指数
1
解决办法
6万
查看次数

如何处理一个非常大的文本文件?

我正在写一些需要处理非常大的文本文件的东西(至少有几个GiB).这里需要什么(这是固定的)是:

  • 基于CSV,遵循RFC 4180,但嵌入式换行符除外
  • 随机读取线路,尽管大多数是逐行接近终点
  • 最后添加行
  • (换行).显然,要求重写文件的其余部分,这也很少见,所以目前不是特别重要

该文件的大小不许在存储器完全保持它(这也是不希望的,附加的变化时,应尽快持续自).

我曾想过使用内存映射区域作为文件的窗口,如果请求超出其范围的行,它将被移动.当然,在那个阶段我仍然没有字节级别以上的抽象.为了实际使用内容我CharsetDecoder给了我一个CharBuffer.现在的问题是,我可以处理文本行可能就好了CharBuffer,但我还需要知道文件中该行的字节偏移量(以保持行索引和偏移的缓存,所以我不必再次从头开始扫描文件以查找特定行.

有没有办法CharBuffer将匹配ByteBuffer中的偏移量映射到匹配中?使用ASCII或ISO-8859-*显然是微不足道的,对于UTF-8和ISO 2022或BOCU-1来说,事情会变得非常丑陋(不是我实际上期望后两种,但UTF-8应该是默认值) - 并且仍然存在问题).

我想我可以CharBuffer再次将一部分转换为字节并使用长度.无论是工作还是我遇到了变音符号的问题,在这种情况下我可能会强制要求使用NFC或NFD以确保文本始终是明确编码的.

不过,我想知道这是不是要走到这里的方式.有更好的选择吗?

ETA:有人回答常见问题和建议:

这是用于模拟运行的数据存储,旨在成为完整数据库的小型本地替代方案.我们也有数据库后端并且它们被使用,但是对于它们不可用或不适用的情况,我们确实需要这样做.

我也只支持CSV的一个子集(没有嵌入式换行符),但现在还可以.这里有问题的几点是我无法预测线条的长度,因此需要创建文件的粗略地图.

至于什么我上面概述:我在思考的问题是,我可以很容易地确定对人物等级一行的末尾(U + 000D + U + 000A),但我不想假设这看起来像0A 0D上字节级别(对于UTF-16已经失败,例如,它或者是0D 00 0A 00或者00 0D 00 0A).我的想法是,我可以通过不对当前使用的编码细节进行硬编码来使字符编码变得可变.但我想我可以坚持使用UTF-8并将其他所有东西都加入其中.但不知何故,感觉不对劲.

java nio text-files

13
推荐指数
1
解决办法
2275
查看次数

创建一个文本文件并用C++写入它?

我正在使用Visual C++ 2008.我想创建一个文本文件并写入它.

char filename[]="C:/k.txt";
FileStream *fs = new FileStream(filename, FileMode::Create, FileAccess::Write);
fstream *fs =new fstream(filename,ios::out|ios::binary);
fs->write("ghgh", 4);
fs->close();
Run Code Online (Sandbox Code Playgroud)

这是显示FileStream的错误

c++ file-io text-files

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

Windows上的Git GUI无法将SQL(.sql)文件识别为文本

抱歉,如果这已经回答了,但我还是找不到答案:(

我在Windows 7上使用SQL Server Management Studio 2008.

我右键单击任何sproc,函数或对象,然后选择"修改".
我单击"保存"并将文件保存到本地硬盘驱动器上的git存储库的文件夹中.
我保存文件的建议类型="Microsoft SQL Server查询文件(.sql)
所以现在我有一个文件,例如"MySproc.sql"在SQL Management studio中打开正常,但是当我使用Git GUI并进行"扫描"时为了找到修改过的文件,它将我的新"MySProc.sql"显示为"*二进制文件(不显示内容)."而不是简单的文本.

我试过在NOtepad中打开文件并重新保存它但是没有解决它.

任何帮助将不胜感激.

git user-interface text-files

13
推荐指数
1
解决办法
3128
查看次数

从Java中的文本文件中读取特定行

从文本文件中提取特定行数的最有效方法是什么?例如,如果我使用扫描仪来解析文件,我是否首先要创建一个长度与文本文件中的总行数相匹配的数组?

如果一个文本文件有30行而我只想使用第3,第8和第12行,那么有没有办法专门只读取这些行?

java text-files

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

如何删除重复的行

我正在尝试创建一个简单的程序,从文件中删除重复的行.但是,我被卡住了.我的目标是最终删除除1个重复行之外的所有行,与建议的副本不同.所以,我仍然有这些数据.我也想这样做,它采用相同的文件名并输出相同的文件名.当我试图使文件名都相同时,它只输出一个空文件.

input_file = "input.txt"
output_file = "input.txt"

seen_lines = set()
outfile = open(output_file, "w")

for line in open(input_file, "r"):
    if line not in seen_lines:
        outfile.write(line)
        seen_lines.add(line)

outfile.close()
Run Code Online (Sandbox Code Playgroud)

input.txt中

I really love christmas
Keep the change ya filthy animal
Pizza is my fav food
Keep the change ya filthy animal
Did someone say peanut butter?
Did someone say peanut butter?
Keep the change ya filthy animal
Run Code Online (Sandbox Code Playgroud)

预期产出

I really love christmas
Keep the change ya filthy animal
Pizza is my fav …
Run Code Online (Sandbox Code Playgroud)

python text-files

13
推荐指数
1
解决办法
555
查看次数