【问题标题】:Reading from a CSV using two programs simultaneously同时使用两个程序从 CSV 读取
【发布时间】:2020-12-21 05:56:15
【问题描述】:

美好的一天! 我想知道是否有任何方法可以允许不同的编程语言同时访问 csv。 我正在使用 c# 获取实时股票市场数据,然后 Python 对此数据进行计算,然后将数据返回到 csv 文件以再次由 c# 读取,如果我使用多个步骤,即收集历史数据预测历史数据,它就可以工作数据并读取历史数据,但是当我尝试一步(实时)执行此操作时,出现以下错误。

[Errno 13] Permission denied: 'CurrencyPair-Minute.csv'

我认为这是 c# 程序使用文件的结果。 我用以下参数打开的

File.Open(fiName, FileMode.Open, FileAccess.ReadWrite, FileShare.Write);

我只在程序停止时关闭数据流,并且在 c# 程序中持续打开数据流进行读写。 如果我在文件未被读取或写入时关闭流,我得到的错误是

Crashed in (MethodName) with ArgumentException: Stream was not readable.

此外,这也不起作用,因为 Python 程序需要不断检查文件是否有更新。

任何帮助将不胜感激

谢谢

【问题讨论】:

  • 如果你只想阅读,你应该指定FileAccess.ReadFileShare.ReadWrite
  • 写入临时文件。写入完成后,将其移至其他进程可以读取的新文件名。因此,有一个显式的写入步骤,然后是读取步骤 - 不会同时发生。

标签: python c# csv connect live


【解决方案1】:

在获取数据并写入 csv 并在 C# 中关闭 csv 文件后,您应该能够从 C# 文件运行 python 脚本。见这里:How do I run a Python script from C#?

流程是这样的:

C#

  • 获取数据
  • 写入 csv
  • 关闭文件
  • 调用python脚本

Python

  • 做计算
  • 写入文件
  • 关闭文件
  • 退出

【讨论】:

  • 谢谢你这很有意义,感谢你提供的资源!
  • 即使 python 程序正在运行,我也没有得到任何输出,您可能知道为什么会这样吗?我已经完全按照演示实现了代码。
  • 不确定是否在已接受答案的评论部分中找到此评论“在Console.Write(result); 之后添加一行Console.ReadLine();,您应该能够看到结果,因为它正在等待任何按键退出"
  • 我试过这个但它不起作用,或者我试过 process.WaitForExit();我将其添加为嵌套“使用”调用的最后一行,这也不起作用。
  • 如果有人需要,您可以提出一个单独的问题并将其链接到此处。您可以尝试的一件事是将 python 的输出重定向到文件。 start.Arguments = string.Format("{0} {1} > output.txt 2>&1", cmd, args);,将stdout和stderr重定向到文件output.txt
猜你喜欢
  • 1970-01-01
  • 2020-06-30
  • 2022-01-02
  • 1970-01-01
  • 1970-01-01
  • 2015-06-29
  • 1970-01-01
  • 2019-01-18
  • 1970-01-01
相关资源
最近更新 更多