如何将一个文件的内容复制到另一个文件?

如何将一个文件的内容复制到另一个文件?

所以我有一个 .txt 文件,我需要逐行导入数据。这应该可以正常工作。但是我需要调整加载到命令中的内容并将其写入另一个 .txt 文件,该文件稍后将由 datatool 包使用。问题是,如果我这样写:

\documentclass{article}

\begin{document}

\newopen\copyfile  % open the file to write to
\openout\copyfile=copy.txt

\newread\file      % open the file to read from
\openin\file=file.txt

\loop\unless\ifeof\file
  \read\file to\fileline  % Read one line and store it into \fileline

  \fileline                   % print the content into the pdf
  \write\copyfile{\fileline}  % print the content to copy.txt
\repeat

\end{document}

输出文件如下所示:

\par
\par
\par
...

而 pdf 显示文件的实际内容。下面是用于输入的文本文件的示例。

数据.txt:

This is the first line.
And the second one.
Here is the third.
And so on...

如果有人有另一种解决方案,让数据工具跳过第一x行,或者在读取某个字符串时效果更好,那么这也将以更有效的方式解决我的问题:)

ps:我无法调整.txt文件

答案1

你忘了\immediate

\documentclass{article}

\begin{document}

\newwrite\copyfile  % open the file to write to
\immediate\openout\copyfile=copy.txt

\newread\file      % open the file to read from
\openin\file=data.txt

\begingroup\endlinechar=-1
\loop\unless\ifeof\file
  \read\file to\fileline  % Read one line and store it into \fileline
  \fileline\par                   % print the content into the pdf
  \immediate\write\copyfile{\unexpanded\expandafter{\fileline}}  % print the content to copy.txt
\repeat
\endgroup

\end{document}

我还添加了一个技巧来避免在扩展的末尾出现空白\fileline。但是复制不会准确,因为 TeX 总是在读入文件的末尾添加一个空行。

\unexpanded\expandafter{\fileline}避免了数据文件中可能存在的命令扩展问题。

这很难理解为什么你会想要这个。

相关内容