gpt4 book ai didi

python - 在 linux 上,使用 bash 脚本如何重命名 Excel 文件以在现有文件名的末尾包含行数

转载 作者:行者123 更新时间:2023-12-04 20:24:15 25 4
gpt4 key购买 nike

第一次发帖,请温柔。
我有一个在 Linux 服务器上运行的 bash 脚本,它每天 sftp 下载 Excel 文件。该文件被移动到 Windows 共享。
出现了一个额外的要求,我想将行数添加到文件名中,该文件名的时间戳也每天都不同。理想情况下在 xlsx 扩展之前的最后。
在做了一些研究之后,如果我使用 Python 和其中一个 Excel 模块,我似乎可以在同一个脚本中完成所有工作。我是 Python 的一个完整的菜鸟,但我已经做了一些实验,并且使用 Pandas 模块有一些工作代码。
这是我在测试电子表格中工作的内容,其中包含名为 mysheet 的工作表并计算名为 code 的列。

>>> excel_file = pd.ExcelFile('B:\PythonTest.xlsx')
>>> df = excel_file.parse('mysheet')
>>> df[['code']].count()
code 10
dtype: int64

>>> mycount = df[['code']].count()
>>> print(mycount)
code 10
dtype: int64
>>>
请问我有2个问题。
首先,我如何将今天的文件名传递给 python 脚本,然后进行计数,以及如何将其返回给 bash。另外,在上面的示例中,我如何只返回计数值,例如 10。我不希望列名或 dtype 传回。
提前致谢。

最佳答案

假设我们将您的 python 放入一个单独的脚本文件中,例如:

# count_script.py
import sys
import pandas as pd

excel_file = pd.ExcelFile(sys.argv[1])
df = excel_file.parse('mysheet')
print(df[['code']].count().at(0))
然后,我们可以轻松地从最初调用它的 bash 脚本(下载文件的那个)中调用该脚本。
TODAYS_FILE="PythonTest.xlsx"

# ...
# Download the file
# ...

# Pass the file into your python script (manipulate the file name to include
# the correct path first, if necessary).
# By printing the output in the python script, the bash subshell (invoking a
# command inside the $(...) will slurp up the output and store it in the COUNT variable.
COUNT=$(python count_script.py "${TODAYS_FILE}")

# this performs a find/replace on $TODAYS_FILE, replacing the ending ".xlsx" with an
# underscore, then the count obtained via pandas, then tacks on a ".xlsx" again at the end.
NEW_FILENAME="${TODAYS_FILE/\.xlsx/_$COUNT}.xlsx"

# Then rename it
mv "${TODAYS_FILE}" "${NEW_FILENAME}"

关于python - 在 linux 上,使用 bash 脚本如何重命名 Excel 文件以在现有文件名的末尾包含行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64251311/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com