You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在命令行中接收文件名作为程序参数?

嗨!刚启动项目就碰到命令行参数的问题很正常,这是很多程序的基础环节,我给你整理了几种常用编程语言的实现方式,你可以根据自己的技术栈来参考:

Python 实现示例

在Python里,用内置的sys模块就能轻松获取命令行参数,还能顺便做参数校验:

import sys

# 先检查有没有传入文件名参数
if len(sys.argv) < 2:
    print("请在命令行后跟上文件名参数,比如:python your_script.py example.txt")
    sys.exit(1)

# sys.argv[0]是脚本本身的路径,sys.argv[1]就是你传入的第一个文件名
filename = sys.argv[1]
print(f"你传入的文件名是:{filename}")

# 这里可以加文件读取的示例,方便你直接上手
try:
    with open(filename, 'r') as f:
        content = f.read()
        print("文件内容预览:")
        print(content[:100])  # 只打印前100个字符避免输出过多
except FileNotFoundError:
    print(f"错误:找不到文件 {filename}")
Node.js 实现示例

Node.js里靠process.argv数组来获取命令行参数,同样先做参数检查更稳妥:

// 检查参数数量是否足够
if (process.argv.length < 3) {
    console.log("请传入文件名参数,比如:node your_script.js example.txt");
    process.exit(1);
}

// process.argv[0]是node的路径,process.argv[1]是脚本路径,process.argv[2]就是目标文件名
const filename = process.argv[2];
console.log(`你传入的文件名是:${filename}`);

// 用异步方式读取文件,符合Node.js的习惯
const fs = require('fs').promises;
async function readTargetFile() {
    try {
        const content = await fs.readFile(filename, 'utf8');
        console.log("文件内容预览:");
        console.log(content.slice(0, 100));
    } catch (err) {
        console.error(`错误:${err.message}`);
    }
}
readTargetFile();
Java 实现示例

Java的main方法本身就自带参数数组,直接用就行:

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;

public class FileProcessor {
    public static void main(String[] args) {
        // 先判断有没有传入参数
        if (args.length == 0) {
            System.out.println("请传入文件名参数,比如:java FileProcessor example.txt");
            System.exit(1);
        }

        String filename = args[0];
        System.out.println("你传入的文件名是:" + filename);

        // 读取文件的示例代码
        try {
            String content = Files.readString(Paths.get(filename));
            System.out.println("文件内容预览:");
            // 避免内容过长,只取前100个字符
            System.out.println(content.substring(0, Math.min(content.length(), 100)));
        } catch (IOException e) {
            System.err.println("错误:" + e.getMessage());
        }
    }
}
C++ 实现示例

C++里通过main函数的argc(参数个数)和argv(参数数组)来获取命令行输入:

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

int main(int argc, char* argv[]) {
    // 检查参数是否足够
    if (argc < 2) {
        std::cout << "请传入文件名参数,比如:./your_program example.txt" << std::endl;
        return 1;
    }

    std::string filename = argv[1];
    std::cout << "你传入的文件名是:" << filename << std::endl;

    // 读取文件并预览内容
    std::ifstream file(filename);
    if (file.is_open()) {
        std::string content((std::istreambuf_iterator<char>(file)), std::istreambuf_iterator<char>());
        std::cout << "文件内容预览:" << std::endl;
        if (content.size() > 100) {
            std::cout << content.substr(0, 100) << "..." << std::endl;
        } else {
            std::cout << content << std::endl;
        }
        file.close();
    } else {
        std::cerr << "错误:无法打开文件 " << filename << std::endl;
        return 1;
    }

    return 0;
}

最后给你两个小建议:

  • 一定要做参数校验:比如检查是否传入参数、文件是否存在、有没有读写权限,这些细节能让你的程序更稳定,不容易崩溃。
  • 如果需要处理多个文件名,只需要遍历参数数组就行,比如Python里的sys.argv[1:]就是所有传入的文件名列表。

内容的提问来源于stack exchange,提问作者Scott Holley

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 07:21:24