<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def check_file( state, fname, missing_msg="Did you create a file named `{}`?", is_dir_msg="Want to check a file named `{}`, but found a directory.", parse=True, use_fs=True, use_solution=False, ):
 """Test whether file exists, and make its contents the student code. Note: this SCT fails if the file is a directory. """


    if use_fs:
        p = Path(fname)
        if not p.exists():
            state.report(Feedback(missing_msg.format(fname)))  # test file exists
        if p.is_dir():
            state.report(Feedback(is_dir_msg.format(fname)))  # test its not a dir

        code = p.read_text()
    else:
        code = _get_fname(state, "student_code", fname)

        if code is None:
            state.report(Feedback(missing_msg.format(fname)))  # test file exists

    sol_kwargs = {"solution_code": None, "solution_ast": None}
    if use_solution:
        sol_code = _get_fname(state, "solution_code", fname)
        if sol_code is None:
            raise Exception("Solution code does not have file named: %s" % fname)
        sol_kwargs["solution_code"] = sol_code
        sol_kwargs["solution_ast"] = (
            state.parse(sol_code, test=False) if parse else None
        )

    return state.to_child(
        student_code=code,
        student_ast=state.parse(code) if parse else None,
        fname=fname,
        **sol_kwargs
    )