python怎么写入_如何在Python中正确写入FIFO?

当我在Python中打开FIFO(命名管道)进行写入时,发生了非常奇怪的事情。考虑一下当我尝试打开FIFO以便在交互式解释器中进行写入时发生的情况:

>>> fifo_write = open('fifo', 'w')

以上行将阻塞,直到我打开另一个解释器并键入以下内容:

>>> fifo_read = open('fifo', 'r')

>>> fifo.read()

我不明白为什么我必须等待打开管道进行读取,但是让我们跳过它。上面的代码将阻塞,直到有可用的数据为止。但是,假设我回到第一个解释器窗口并输入:

>>> fifo_write.write("some testing data\n")

>>> fifo_write.flush()

预期的行为是,在第二个解释器上,对的调用read将返回,并且我们将在屏幕上看到数据,除了那对我而言没有发生。如果我打电话os.fsync,会发生以下情况:

>>> import os

>>> fifo_write.flush()

>>> os.fsync(fifo_write.fileno())

Traceback (most recent call last):

File "", line 1, in

OSError: [Errno 22] Invalid argument

FIFO阅读器仍在等待。但是,如果我打电话,fifo_writer.close()那么数据将被刷新。如果我使用shell命令来输入管道:

$ echo "some data" > fifo

那么阅读器输出为:

>>> fifo_read.read()

'some data\n'

有人经历过吗?如果是这样,是否有解决方法?我当前的操作系统是带有Linux 2.6.38的Ubuntu 11.04。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,我们需要使用Python的pandas库来读取和写入Excel文件。然后,我们可以使用pandas的函数来进行先进先出成本核算。 以下是一个示例代码: ```python import pandas as pd # 读取Excel文件 df = pd.read_excel('inventory.xlsx') # 计算每个产品的平均成本 df['average_cost'] = df['total_cost'] / df['quantity'] # 按照日期排序 df = df.sort_values(by=['date']) # 初始化先进先出成本和销售额 fifo_cost = 0 sales_revenue = 0 # 遍历每个销售订单 for index, row in df.iterrows(): # 如果库存数量不足,则跳过该订单 if row['quantity'] > df['quantity'].sum(): continue # 扣除库存数量 df.loc[index, 'quantity'] -= row['quantity'] # 计算销售额 sales_revenue += row['price'] * row['quantity'] # 计算先进先出成本 while row['quantity'] > 0: # 获取最早进货的产品 earliest_row = df.iloc[0] # 如果该产品库存数量不足,则删除该行 if earliest_row['quantity'] < row['quantity']: fifo_cost += earliest_row['average_cost'] * earliest_row['quantity'] row['quantity'] -= earliest_row['quantity'] df = df.drop(earliest_row.name) # 否则更新库存数量并计算成本 else: fifo_cost += earliest_row['average_cost'] * row['quantity'] df.loc[earliest_row.name, 'quantity'] -= row['quantity'] row['quantity'] = 0 # 输出先进先出成本和销售额 print('FIFO cost:', fifo_cost) print('Sales revenue:', sales_revenue) ``` 此代码假设我们的Excel文件有以下列: - date:进货或销售日期 - product:产品名称 - quantity:进货或销售数量 - price:销售价格 - total_cost:进货总成本 输出将显示先进先出成本和销售额。请注意,此代码仅考虑一个产品的库存。如果需要进行多个产品的库存核算,请添加一个产品列,并在代码相应地修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值